What is it, naokirin?

C++0xの機能 (外部テンプレート)

今回は"Extern template"(外部テンプレート)。

「外部テンプレート」っていうとなんだかよくわからない感じもしますが、"extern template"と書けば明らかというかそのままというか。


C++を使っていて、恥ずかしながら全く気が付いていなかったのですが、今まで次のようなプログラム

extern template class std::vector<SampleClass>;


のような引数が完全に指定されたテンプレートクラスのextern宣言を書いても、"この翻訳単位ではテンプレートのインスタンス化をしない"ということはなかったようです。

C++0xからは上のような構文を用いると、"この翻訳単位ではテンプレートのインスタンス化をしない"ようになるそうです。これはコンパイル時間の短縮に大きく寄与する可能性があります。