C++11で導入されたautoによる型推論とrvalue参照(T&&
)に関するメモ。
auto&&
による型推論の結果が常にrvalue参照型となるとは限らない。
int x; auto t0 = x; // t0はint型 auto& t1 = x; // t1はint&型 auto&& t2 = x; // t2はint&型(int&&型ではない) auto&& t3 = std::move(x); // t3はint&&型 auto v0 = 42; // v0はint型 auto& v1 = 42; // v1はint&型 → 42はprvalueのためill-formed auto&& v2 = 42; // v2はint&&型
変数t2
では “reference collapsing” によって int& &&
→ int&
型となる。
関連URL