Код: Выделить всё
std::string data("This is a string long enough so that it is not a short string");
Код: Выделить всё
std::string_view dataView(std::begin(data) + 5, std::end(data) - 5);
Код: Выделить всё
std::string movedData(std::move(data));
Но это предположение не выполняется, если оптимизация коротких строк std::string вступает в силу, поскольку базовая память строки не выделяется динамически, и перемещение теперь (под капотом) становится деструктивной операцией копирования, оставляющей представление недействительным.
Вопросы:
- Есть ли что-нибудь в стандарте по этому поводу.
- Есть ли способ обнаружить оптимизацию коротких строк (чтобы я мог предпринять соответствующие действия в конструкторе перемещения класса)?
Подробнее здесь: https://stackoverflow.com/questions/798 ... -detection
Мобильная версия