24 Strings library [strings]

24.3 String classes [string.classes]

24.3.2 Class template basic_­string [basic.string]

24.3.2.1 basic_­string general requirements [string.require]

Если какая-либо операция вызовет size() превышение max_­size(), эта операция вызовет объект исключения типа length_­error.

Если какая-либо функция-член или оператор basic_­string выдает исключение, эта функция или оператор не должны иметь никакого другого эффекта.

В каждой специализации basic_­string<charT, traits, Allocator>тип allocator_­traits<Allocator>​::​value_­type должен называть тот же тип, что и charT. Каждый объект типа basic_­string<charT, traits, Allocator> должен использовать объект типа Allocator для выделения и освобождения памяти для содержащихся charT объектов по мере необходимости. Используемый Allocator объект должен быть получен, как описано в [container.requirements.general]. В каждой специализации basic_­string<charT, traits, Allocator>тип traits должен удовлетворять требованиям к характеристикам символов ([char.traits]), и тип traits​::​char_­type должен называть тот же тип, что и charT.

Ссылки, указатели и итераторы, относящиеся к элементам basic_­string последовательности, могут быть признаны недействительными при следующих применениях этого basic_­string объекта:

  • в качестве аргумента любой стандартной библиотечной функции, принимающейbasic_­string в качестве аргумента ссылку на неконстантный .226

  • Вызов неконстантная функций - членов, за исключением operator[], at, data, front, back, begin, rbegin, end, и rend.

Например, в качестве аргумента для функций swap(), не являющихся членамиoperator>>(), и getline(), или в качестве аргумента для basic_­string​::​swap().