- Как концепция тривиального перемещения из 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