Ok j'ai ce code:Pourquoi && lie-t-il parfois des lvalues et d'autres moments non?
struct Mine{
template<typename T>
Mine(T&& x){
}
};
void nFoo(int&& x){
}
void sFoo(Mine x){
}
Le nFoo
prend un directement int&&
, alors que le sFoo
fait un peu finagling pour obtenir le même effet.
Tenir compte de ce code:
nFoo(12); //Works
int x = 0;
nFoo(x); //Cannot bind int (lvalue) to int&&
sFoo(12); //Works
sFoo(x); //Works
Pourquoi le int&&
permettent parfois de se lier lvalue
s et parfois pas?
Theres un bel article spécifiquement à ce sujet dans * Effective Modern C++ * par Scott Meyers. – Borgleader
Copie possible de [Pourquoi "références universelles" ont la même syntaxe que les références rvalue?] (Http://stackoverflow.com/questions/20364297/why-universal-references-have-the-same-syntax-as-rvalue- références) – Borgleader