auto指定子では、他の指定子や宣言子を組み合わせることができる。 int x = 0 ; int & ref = x ; ここで、宣言子がrvalueリファレンスの場合、注意を要する。 int main() { int x = 0 ; int && r1 = x ; // エラー、rvalueリファレンスをlvalueで初期化できない auto && r2 = x ; // OK、ただし、r2の型はint & auto && r3 = std::move(x) ; // OK、r3の型はint && // false std::is_rvalue_reference< decltype(r2) >::value ; // true std::is_rvalue_reference< decltype(r3) >::value ; } なぜならば、auto指定子の型は、template a