Присвоение Rvalue, возвращенного из функции другому Rvalue
class Test {
public:
int n1;
};
Test func() {
return Test();
}
int main() {
func() = Test();
}
Это не имеет смысла для меня. Как и почему это разрешено? Это неопределенное поведение? Если функция возвращает значение rvalue, то как можно установить значение rvalue для другого значения rvalue? Если бы я попробовал это с любыми примитивными типами, это дало бы мне ошибку, как я и ожидал.
Я знаю, что lvalue - это место в памяти, поэтому функция создает временное lvalue (rvalue?) И присваивает его другому lvalue? Может кто-нибудь объяснить, как работает этот синтаксис?