
項目 2:auto の型推論を理解する
|
11
さて、ここまでで auto に関するテンプレートの型推論規則を学びました。初めに述べたように
型推論規則はきわめて直観的です。ほとんどの場合は直観的に理解できます。特別な注意が必要な
のは泥水をかき回すようなユニヴァーサル参照の型を推論する際の左辺値です。また、配列と関数
がポインタに成り下がる規則がさらにかき回して濁りが増します。コンパイラの胸ぐらをつかみ、
「お前が推論する型を吐け!」と怒鳴りつけたくなることもあるかもしれません。そんな時は項目 4
を読んでください。コンパイラがそう動作するよう上手くおだてるための項目です。
重要ポイント
•
テンプレートの型推論時には、参照実引数は参照とは扱われない。すなわち参照性は無視さ
れる。
•
ユニヴァーサル参照仮引数の型を推論する際には、左辺値実引数を特別扱いする。
•
値渡しの仮引数の型を推論する際には、const および/または volatile 実引数は非 const、
非 volatile と扱われる。
•
参照を初期化するものでなければ、配列または関数実引数はテンプレートの型推論時にポイ
ンタに成り下がる。
項目 2:auto の型推論を理解する
項目 1 のテンプレートの型推論を読んでいれば、auto の型推論についてもすでにほぼすべてを把
握していることになります。やや奇異にも見える一点だけを除き、auto の型推論はテンプレート
の型推論と同一です。しかしそんなことが可能でしょうか? テンプレートの型推論ではテン ...