C.2.11, пункт 21: библиотека строк
21.4.1
Изменение: ослабить недействительность базовой_строки Rules
Обоснование: разрешить оптимизацию небольших строк.
Влияние на исходную функцию: Действительный код C++ 2003 может выполняться
по-другому в этом международном стандарте. Некоторые функции-члены const
, такие как data и c_str, больше не делают итераторы недействительными.
Правило недействительности итераторов std::string действительно изменилось с C++03 на C++11 в этом data() и c_str() больше не разрешено делать итераторы недействительными, но я не знаю, как это приводит к обоснованию "
Код: Выделить всё
allow small-string optimizationДва различия std::string между C++11 и C++03, о которых я знал до того, как наткнулся на примечания к SSO в приложении совместимости:
- Элементы гарантированно будут храниться смежно в C++11
- Реализация COW не является опцией в C++11 (некоторые операции, такие как оператор[], не могут делать итераторы недействительными)
Подробнее здесь: https://stackoverflow.com/questions/223 ... -stdstring
Мобильная версия