C++ ユーザーズガイド

-instances=a

テンプレートインスタンスの位置とリンケージを制御します。

a には次のいずれかを指定します。

a の値

意味 

extern

必要なすべてのインスタンスをテンプレートリポジトリに置き、それらに対して大域リンケージを行います (リポジトリのインスタンスが古い場合は、再びインスタンス化されます)。 

explicit

明示的にインスタンス化されたインスタンスを現在のオブジェクトファイルに置き、それらに対して大域リンケージを行います。必要なインスタンスが他にあっても生成しません。 

global

必要なすべてのインスタンスを現在のオブジェクトファイルに置き、それらに対して大域リンケージを行います。 

semiexplicit

明示的にインスタンス化されたインスタンスを現在のオブジェクトファイルに置き、それらに対して大域リンケージを行います。明示的なインスタンスにとって必要なすべてのインスタンスを現在のオブジェクトファイルに置き、それらに対して静的リンケージを行います。必要なインスタンスが他にあっても生成しません。 

static

必要なすべてのインスタンスを現在のオブジェクトファイルに置き、それらに対して静的リンケージを行います。 

デフォルト

-instances を指定しないと、-instances=extern が使用されます。

警告

extern 以外の値の場合、テンプレート定義が現在のコンパイル単位 に含まれていなければなりません (直接でも間接でも可)。この定義がないと、コンパイラはインスタンス化を報告なしに省略します。

関連項目

第 4 章「テンプレートのコンパイル」