[string.require] (original) (raw)

21 Strings library [strings]

21.3 String classes [string.classes]

21.3.2 Class template basic_­string [basic.string]

21.3.2.1 General requirements [string.require]

If any operation would cause size() to exceed max_­size(), that operation throws an exception object of type length_­error.

If any member function or operator of basic_­string throws an exception, that function or operator has no other effect on the basic_­string object.

In every specialization basic_­string<charT, traits, Allocator>, the type allocator_­traits<Allocator>​::​value_­type shall name the same type as charT.

Every object of typebasic_­string<charT, traits, Allocator> uses an object of typeAllocator to allocate and free storage for the contained charTobjects as needed.

In every specialization basic_­string<charT, traits, Allocator>, the type traits shall meet the character traits requirements ([char.traits]).

[ Note

:

The program is ill-formed if traits​::​char_­typeis not the same type as charT.

end note

]

References, pointers, and iterators referring to the elements of abasic_­string sequence may be invalidated by the following uses of that basic_­string object: