oui mais - sauf si on ne se comprend pas- , si on est sûr que x est une r-value, si comme tu me la confirmer "un membre de rvalue ne peut etre qu'une rvalue lui même" et bien je ne vois toujours pas l'intérêt de faire du move par exemple là :
vec(std::move(x.vec)) : x est r-value=> x.vec est r-value, so why move ??
EDIT: à priori l'explication serait que, bien que déclaré comme r-value parameter, x est traité comme l-value pour des raisons de sécurité, si quelqu'un en sait d'avantage je suis preneur
void g(const A& );
void g(A&& );
void f(A&& a)
{
g(a); // calls g(const A& )
}
à priori c'est pour éviter des histoires de double move et donc de contenu "voler" deux fois
Message édité par Glock 17Pro le 30-04-2009 à 13:40:58