templateregistry

C++ に適用

目的

ソース内で検出されるすべてのテンプレートについて、そのレコードを保守し、テンプレートごとに、一度だけインスタンス化を行うようにする。

構文

        .-templateregistry--+------------------+-.
        |                   '-=--registry_file-' |
>>- -q--+-notemplateregistry---------------------+-------------><
 
 

-qtempinc コンパイラー・オプションと、 -qtemplateregistry コンパイラー・オプションは、同時に指定できません。-qtempinc を指定すると、 -qnotemplateregistry が暗黙指定されます。同様に、 -qtemplateregistry を指定すると、-qnotempinc が暗黙指定されます。ただし、-qnotempinc を指定しても、 -qtemplateregistry が暗黙指定されるわけではありません。

-qtemplateregistry オプションは、ソース内で検出されるすべてのテンプレートについて、そのレコードを保守し、テンプレートごとに、一度だけインスタンス化を行うようにします。コンパイラーが最初にテンプレートのインスタンス化の参照を検出すると、そのインスタンスが生成され、それに関連したオブジェクト・コードが、現行オブジェクト・ファイルに配置されます。別のコンパイル単位で、同じテンプレートの同一のインスタンス化への参照がさらにある場合、それらの参照は記録はされますが、インスタンスが重複して生成されることはありません。 -qtemplateregistry オプションを使用するのに、特別なファイル編成は必要ありません。

場所を指定しない場合、コンパイラーは、現行作業ディレクトリーに保管されている templateregistry ファイルにすべてのテンプレート・レジストリー情報を保管します。テンプレート・レジストリー・ファイルは、異なるプログラム間で共有してはいけません。ソースが同じディレクトリーにある 2 つ以上のプログラムがある場合、現行作業ディレクトリーに保管されているデフォルトのテンプレート・レジストリー・ファイルに依存すると、この状況が起こり、間違った結果を出すことになります。

ファイル myprogram.C をコンパイルして、テンプレート登録情報を /tmp/mytemplateregistry ファイルに配置するには、以下のように入力します。

  xlc++ myprogram.C -qtemplateregistry=/tmp/mytemplateregistry

関連参照

コンパイラーのコマンド行オプション
templaterecompile
tempinc

C++ テンプレートの使用も参照してください。 IBM Copyright 2003