タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

autoに関するmEGGrimのブックマーク (2)

  • auto指定子の型の推定方法

    autoな変数の型は、代入の式になる。そう言ってしまうのは、単なる一ユーザーである。いやしくもプログラミング言語学者(language lawyer)を自負している以上、auto指定子が、どうやって初期化子の式から、変数の型を推定するのかということを、厳密に知らなければならない。 実際、以下のコードをみれば、「変数の型は初期化の式になる」というのが、不完全な説明であるのは理解できるだろう。 int const a = 0 ; // aの型はint const auto b = a ; // bの型はint auto const c = a ; // cの型はint const auto const & d = a ; // dの型はint const & しかし、この型の推定方法は、何かに似ている。そう、まるでテンプレートの実引数の型を推定しているようだ。まさにその通りである。auto指定

  • 本の虫: auto指定子の落とし穴

    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

  • 1