
|
1
1 章
型推論
C++98 に型の推論規則は一種類しかありませんでした1。関数テンプレートです。C++11 ではこの
規則に若干の変更を加え、auto による推論規則、decltype による推論規則の 2 つを追加しました。
さらに C++14 では auto と decltype の適用可能場面を拡張しました。型を推論できる場面が増え
れば、暴虐にも等しい、自明もしくは冗長な型を1文字ずつ正確に入力する労苦からプログラマを
解放できます。ソースコードの 1 箇所で型を変更すれば、型推論のおかげで他の箇所にも自動的に
伝搬され、C++ ソフトウェアの適用性も高まります。しかしながら、ソースコードを読み下す際の難
易度が上がってしまうという問題もあります。これはコンパイラが推論した型が期待されるほど明
白ではない場合があるためです。
型がどのように推論されるかを完全に把握しなければ、現代の C++ での効率的なプログラミ
ングは不可能です。型が推論される場面は多岐に渡り、関数テンプレート呼び出しや、auto を
記述した箇所はほぼそうです。decltype の式もそうですし、C++14 には謎めいた暗号のような
decltype(auto) もあります。
本章では型推論を解説します。すべての C++ 開発者にとって必須の知識です。テンプレートの型
がどのように推論されるか、auto はこれをどのように利用しているか、また decltype はどのよう
に処理されるかについてです。さらに、コンパイラを利