Если какая-либо операция вызовет 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().