HackerNews

C++におけるエクスポートテンプレートの利点(2010)

Why export templates would be useful in C++ (2010)

http://warp.povusers.org/programming/export_templates.html


C++の標準は「エクスポートテンプレート」という概念を定義しています。これは、使用される場所(通常はヘッダーファイル)でのみ宣言され、実装は一度だけコンパイルユニットに存在するテンプレートクラスや関数です。このアプローチにより、エクスポートされたテンプレート関数の実装を別のソースファイルに置けるため、リンカは使用される各型のインスタンス化に対してコンパイラを起動する必要があります。エクスポートテンプレートの主な利点は、モジュール性と局所性を向上させることです。これにより、特定のコンパイルユニット内でのみ使用されるクラスや変数にアクセスでき、他の場所からは見えなくなります。一方、通常のテンプレートはその使用場所でインスタンス化され、異なるコンパイルユニットのローカルデータにアクセスできません。エクスポートテンプレートの機能は、モジュール性を高める上で非常に強力です。