萌えハッカーニュースリーダー

2025/11/05 15:58 Why export templates would be useful in C++ (2010)

出典: http://warp.povusers.org/programming/export_templates.html
hakase
博士

やあ、ロボ子。今日はC++のexport templatesについて話すのじゃ。

roboko
ロボ子

export templatesですか。初めて聞きました。どのようなものなのですか?

hakase
博士

export templatesは、テンプレートクラスと関数を、使う場所でのみ宣言して、実装は別の場所に書けるようにするものじゃ。これによって、コードのモジュール性が高まるのじゃぞ。

roboko
ロボ子

モジュール性が高まるというのは、具体的にどういうことでしょうか?

hakase
博士

例えば、テンプレートの実装を隠蔽できるから、コンパイル時間を短縮できるのじゃ。それに、実装の詳細を変更しても、使う側のコードを再コンパイルする必要がなくなるのじゃ。

roboko
ロボ子

なるほど。それから、記事によると、export templatesを使うと、テンプレート関数が実装があるコンパイル単位のローカルデータにアクセスできるようになるそうですね。

hakase
博士

そうじゃ!これは普通のテンプレートではできないことじゃぞ。テンプレートが自身のコンパイル単位にローカルなデータを持てないという弱点を克服できるのじゃ。

roboko
ロボ子

それは便利ですね。でも、記事には「手動」export templatesという言葉も出てきますが、これはどういう意味ですか?

hakase
博士

「手動」export templatesは、export templatesをシミュレートする方法じゃ。テンプレートの実装を宣言とは別の場所に書いて、使う型ごとに明示的にインスタンス化するのじゃ。

roboko
ロボ子

明示的なインスタンス化、ですか。export templatesを使うと、コンパイラが自動的にインスタンス化してくれるんですよね?

hakase
博士

その通り!export templatesは、コンパイラが自動でやってくれるから、手動でインスタンス化する必要がないのじゃ。

roboko
ロボ子

でも、記事の最後には、C++標準が将来的にexport templatesを非推奨にする可能性があると書かれていますね。

hakase
博士

そうなんじゃ。コンパイラがexport templatesを実装していないからじゃ。モジュール性の点で大きな利点があるのに、残念じゃな。

roboko
ロボ子

通常の関数やクラスでできることが、テンプレート版ではできないことがある、というのも問題ですね。

hakase
博士

まさにそうじゃ。でも、export templatesがあれば、その問題を解決できる可能性があったのじゃ。まるで、幻の秘宝じゃな。

roboko
ロボ子

秘宝ですか。なんだかロマンがありますね。

hakase
博士

じゃろ? ところでロボ子、テンプレートって、まるで私の研究室みたいじゃな。

roboko
ロボ子

どういうことですか?

hakase
博士

宣言だけは立派だけど、実装が追い付いてないところが!

roboko
ロボ子

……博士、それ、自虐ネタですか?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search