エクスポート・テンプレート

インテル® C++ コンパイラーは、次のオプションでエクスポート・テンプレートをサポートしています。

オプション

説明

-export

エクスポート・テンプレートの認識を有効にします。C++ モードでのみサポートされています。

-export-dir dir

エクスポート・テンプレートの検索パスのディレクトリー名を指定します。ディレクトリーは、エクスポート・テンプレートの定義を検索するのに使用され、コマンドラインで指定した順序で検索されます。カレント・ディレクトリーは、常に最初に検索されます。

Note icon

gcc 3.3 以前ではエクスポート・テンプレートはサポートされていません。この機能を使用するには、gcc 3.4 以上が必要です。

エクスポート・テンプレートとは、export キーワードで宣言されたテンプレートです。クラス・テンプレートをエクスポートすることは、各スタティック・データ・メンバーと非インラインメンバー関数をエクスポートするのと同じことです。エクスポート・テンプレートは固有です。つまり、テンプレートの定義は、そのテンプレートを使用する変換単位内で記述する必要はありません。例えば、次の C++ プログラムは 2 つの別々の変換単位で構成されています。

// file1.cpp

#include <stdio.h>

static void trace() { printf("File 1\n"); }

export template<class T> T const& min(T const&, T const&);

int main() {

  trace();

  return min(2, 3);

}

 

// file2.cpp

#include <stdio.h>

static void trace() { printf("File 2\n"); }

export template<class T> T const& min(T const &a, T const &b) {

  trace();

  return a<b? a: b;

}

これらの 2 つのファイルは、別々の変換単位であるため、それぞれ独立しています。これにより、内部参照で 2 つの trace() 関数が共存することができます。

使用方法

icpc -export -export-dir /usr2/export/ -c file1.cpp icpc -export -export-dir /usr2/export/ -c file2.cpp icpc -export -export-dir /usr2/export/ file1.o file2.o

関連情報