Изменяются ли правила категорий значений C++, такие как исключение копирования, с помощью C++26 tribuly_relocatable_if_eC++

Программы на C++. Форум разработчиков
Anonymous
Изменяются ли правила категорий значений C++, такие как исключение копирования, с помощью C++26 tribuly_relocatable_if_e

Сообщение Anonymous »

Категории значений C++11 (lvalues, xvalues и prvalues) глубоко связаны с ядром самого C++ таким образом, что невозможно рассуждать о C++ без рассуждений о семантике значений.
C++17 сгладил объектную модель, поэтому у нас есть такие вещи, как гарантированное исключение копирования, что делает более предсказуемым узнать, когда происходит создание/уничтожение/временная материализация и т. д. сцены.
В C++26 введена концепция тривиальной перемещаемости, позволяющая пропустить уничтожение некоторых перемещенных значений. Мне интересно, каковы последствия, когда я рассуждаю о выражениях C++, сосредоточив внимание на категориях значений.

Например, если у меня есть переменная (so lvalue) для тривиально перемещаемого типа и я перемещаю значение куда-то, создает ли она prvalue вместо значения x?

Становится ли это UB для использования указателя на перемещенное значение?

А как насчет временного значения? материализация? Изменятся ли какие-нибудь правила?

Подробнее здесь: https://stackoverflow.com/questions/798 ... rivially-r

Вернуться в «C++»