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

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

Сообщение Anonymous »

  • Как концепция тривиального перемещения из C++26 меняет наши рассуждения о категориях значений?
  • Взаимодействуют ли они вообще (например, правила временной материализации)?
  • Например, если у меня есть переменная (so lvalue) для тривиально перемещаемого типа и я перемещаю значение куда-то, создает ли она значение prvalue вместо значения x?
  • Становится ли UB для использования указателя на перемещенное значение?
Пример кода для иллюстративных целей (как указано в комментариях):
struct X
trivially_relocatable
replaceable_if_eligible
{
// ...
};

struct Y
trivially_relocatable
replaceable_if_eligible
{
X some_x;
};

void f()
{
// Point 3: is the initialization of `x` a prvalue?
X x = Y{}.some_x;
}

void g()
{
Y y;

// ...

// Point 4: assuming `y` has been relocated, is the following an UB?
(&y)->some_x;
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... le-if-elig
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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