最終更新日時(UTC):
が更新

履歴 編集

テンプレートのエクスポート機能を削除(C++11)

概要

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のモジュールで再利用された。

参照