C++ 11は、テンプレートクラスのインスタンスが現在のコンパイル単位でインスタンス化されないように、externテンプレート宣言を提供します。それが宣言されているヘッダーファイルを変更せずに、ヘッダーファイルで宣言されたテンプレート化されていないクラスに対しても同じことをする方法はありますか?テンプレート以外のクラスのインスタンス化を防止できますか?
モチベーションは、ブーストによるオブジェクトファイルの膨らみを減らすことです。これは、インライン展開が適用できない場合でも、ヘッダーにテンプレート化されていないクラスがかなり多く定義されています。
なぜオブジェクトファイルのサイズは気になりますか?リンカーは、リンク中に同じシンボルをすべて削除する必要があります。 – ildjarn
@ildjarn:同じシンボルを複数回コンパイルすると大きなプロジェクトで膨大なコンパイル時間が発生する可能性があります – Paranaix
@Paranaix:この問題のようなハックを必要とせずにプリコンパイル済みヘッダーが処理します。 –