このページはC++11に採用された言語機能の変更を解説しています。
のちのC++規格でさらに変更される場合があるため関連項目を参照してください。
概要
C++11では、テンプレート定義をエクスポートする機能を削除する。
テンプレートのエクスポート機能は、ヘッダファイルでテンプレートを宣言し、ソースファイルでテンプレートを定義することで、コンパイル時間の短縮を目指すものであった。
// f.h
template <class T>
void f();
// f.cpp
export template <class T>
void f()
{
...
}
EDGフロントエンドとそれを使用するコンパイラのComeauとICCが唯一このエクスポート機能を実装したが、EDGはエクスポート機能の実装は困難であるために実装することを推奨しないとし、他のコンパイラベンダがこの機能を実装することはなかった。
エクスポート機能が標準C++に採択されてから10年が経過し、他のコンパイラベンダがこの機能に関心を持つことはなかったため、この機能を削除するに至った。
export
キーワードはC++11標準では使用しなくなったが、後にC++20のモジュールで再利用された。