C ++ 11: Por que é permitido atribuir rvalues?
Pelo que entendi, a razão pela qual é perigoso retornar referências de valores de valor a partir de funções é devido ao seguinte código:
T&& f(T&& x) { do_something_to_T(x); return static_cast<T&&>(x); }
T f(const T& x) { T x2 = x; do_something_to_T(x2); return x2; }
T&& y = f(T());
Isto deixay
como uma referência indefinida pendent
No entanto, eu não entendo por que o código acima compila? Existe alguma razão legítima para atribuir uma referência rvalue a outra referência rvalue? Rvalues não devem ser, grosso modo, "temporários", isto é, serão invalidados no final da expressão? Ser capaz de atribuí-los me parece bobage