Me tomó bastante tiempo entender la diferencia entre un valor en r y un objeto temporal. Pero ahora los proyectos finales comité de estados en la página 75:rvalues y objetos temporales en el FCD
Un rvalue [...] es un xValue, un objeto temporal o subobjeto del mismo, o un valor que no está asociado con una objeto.
No puedo creer lo que veo. Esto debe ser un error, ¿verdad?
Para aclarar, aquí es cómo entiendo los términos:
#include <string>
void foo(std::string&& str)
{
std::cout << str << std::endl;
}
int main()
{
foo(std::string("hello"));
}
En este programa, hay dos expresiones que denotan el mismo objeto temporal: la prvalue std::string("hello")
y el valor izquierdo str
. Las expresiones no son objetos, pero su evaluación puede ser una. Específicamente, la evaluación de un prvalue produce un objeto temporal, pero un prvalue NO ES un objeto temporal. ¿Alguien está de acuerdo conmigo o me he vuelto loco? :)
Puede plantearle a las personas de estándares directamente al publicar una pregunta en comp.lang.C++. Std –
@Noah: Lo hice. Veamos qué sucede :) – fredoverflow
[link to comp.std.C++ thread] (http://groups.google.de/group/comp.std.c++/browse_thread/thread/5cdae718218a462c) – fredoverflow