Тот же пример на Rust: вместо unspecified value просто ошибка компиляции. При этом не нужно писать std::move(..) - просто передаем значение в функцию как обычно, перемещение - это поведение по умолчанию
Итак ответ: по стандарту 3, по факту 2, по понятиям вообще нужно пиздить за такой код и не использовать значение после перемещения
Многие также предположили use after free, что довольно разумно на самом деле: в любой спорной ситуации в C++ предполагай худшее
При этом, добавление const запрещает перемещение. В итоге значение будет скопированно, старое значение остается (что логично в случае const) и в итоге напечатается sex
teapawt.net/nanoinx/status/2113455…
Вопрос второй, тож самое но строка const. Какой результат?
Про сложность (модерн) C++ на примере move семантики: рассмотрим такой простой пример, что будет в итоге при запуске?
- Принт "sex"
- Принт пустой строки
- Принт какой-то unspecified строки
- Undefined behavior
Скажу сразу compile error не будет
ИИ дрочеры утверждают дескать важен посыл, идея, суть произведения, а не то насколько оно выстраданно и сколько за ним усилий
И это так
Но если кто-то потратил много усилий ради воплощения своей идеи, значит эта идея для него настолько ценна что ради неё стоило потратить усилия
Не знаю почему, но многие довольно простые концепты каждутся широкому кругу людей чем-то априори сложным
Например указатель: это просто адрес в памяти, по которому можно читать байтики и записывать байтики - ничего принципиально сложного











