回答:
会議の日から約10年前、私はたまたまErwin Unruhと他の何人かと一緒に居酒屋で自分自身を見つけ、VJovicが言及したプログラムについて彼に尋ねました。その時までにビールを2、3本持っていて、それは非公式の会合であり、それは私の頭の中に10年間住んでいるので、これを塩の粒と一緒に持っていきますが、私の記憶によれば:
彼は、STLをより適切に提供するために、テンプレート機能を追加したと述べました。彼によると、委員会の何人か/多くは、彼らがその完全な能力を知らずに何かを作成していると感じました。彼自身、すべてのテンプレート、特に部分的な特殊化がチューリング完全言語を構成していると疑い、彼は常にそれを正式に証明するつもりでしたが、そうすることはありませんでした。
その代わり、彼は標準化会議のある夜、コンパイル中に計算したエラーメッセージ(最新のコンパイラで動作するバージョンはこちら)として素数を出力するプログラムを思いつきました。テンプレートメタプログラムとしては、今日の標準ではそれほど印象的ではありませんが、結局のところ、これは最初のものでした。誰かが彼が冗談だと思ったことを正式にプログラムに提出して作成し、公式のISO標準化文書になりました。
私は具体的に彼にプログラムへのBjarne Stroustrupの反応について尋ねました、そしてそれに応えてアーウィンは彼の目を彼の手で覆うことによって彼をまねしました。 :)
振り返って、その会議にも参加していたTodd Veldhuizenに、式テンプレートをどのように考案したのか尋ねなかったことを後悔しています。(彼は確かに話をするのにぴったりだった。)しかし、私はそれよりずっと若かったので、生涯の機会を逃してしまった。:(
1994年にE. Unruhは、c ++標準化委員会の会議中に、テンプレートを使用してコンパイル時に何かを計算できることを発見しました。彼は素数を出力するプログラムを書いた。この演習の興味深い部分は、素数の生成が、実行時ではなく、コンパイルプロセス中にコンパイラーによって実行されたことです。このプログラムは完全に移植可能ではありませんでしたが、プログラムは、テンプレートのインスタンス化メカニズムがコンパイル時に重要な計算を実行できる原始的な再帰言語であることを示しました。
この抜粋は、VandevoordeとJosuttisによる「c ++テンプレート」からの抜粋です(第17章)。
ご覧のように早く発見され、すぐにその威力が認められました。