C++0x Extern Template

Extern Template は、テンプレートのインスタンス化に関する拡張である


現在の C++ では、特定の翻訳単位でテンプレートを強制的にインスタンス化する方法がいくつかある

// 方法1
template class std::vector<Hoge>;

// 方法2
sizeof(std::vector<Hoge>);

これにより、潜在的なテンプレートのインスタンス化を抑制することができる



C++0x では、以下のような構文が書けるようになる

extern template class std::vector<Hoge>;

extern を先頭に付けることで"この翻訳単位ではテンプレートのインスタンス化をしない"ということができる



N1987 Adding "extern template" (version 2)

C++0x言語拡張まとめ