Outils pour utilisateurs

Outils du site


lang:cpp:rvalue

lvalue et rvalue

a = 2;

lvalue sont les valeurs associées à un objet (et donc généralement à gauche) et rvalue sont les valeurs potentiellement non associée à un objet (généralement à droite d'une expression, valeur temporaire).

Une lvalue se convertit implicitement en rvalue mais pas l'inverse.

Avec les références &, une lvalue non constante ne peut être assignée par une rvalue.

std::string& sref = std::string(); // NOK
const std::string& sref = std::string(); // OK

Understanding lvalues and rvalues in C and C++ Archive du 15/12/2011 le 18/10/2019

std::forward s'utilise dans des méthodes templates. Cette fonction permet d'utiliser le bon choix entre std::copy (référence &) et std::move (référence &&).

C++ Rvalue References Explained Archive de 03/2013 le 18/10/2019

La double référence sert aussi pour éviter que l'objet de retour d'une fonction soit inutilement copié :

std::vector getData() 
{
  std::vector data;
  return data;
}
 
std::vector&& data = retrieveDatas();

C++11 : Les RValues References Archive du 09/04/2014 le 25/10/2019

lang/cpp/rvalue.txt · Dernière modification : 2019/10/25 14:57 de root