ソース内で検出されるすべてのテンプレートについて、そのレコードを保守し、テンプレートごとに、一度だけインスタンス化を行うようにする。
.-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++
テンプレートの使用も参照してください。