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 Session Topic: