ソース内で検出されるすべてのテンプレートについてそのレコードを保守し、テンプレートごとに一度だけインスタンス化が行われることを保証する。
.-notemplateregistry---------------------. >>- -q--+-templateregistry--+------------------+-+------------->< '-=--registry_file-'
コンパイラーが最初にテンプレートのインスタンス化の参照を検出すると、そのインスタンスが生成され、それに関連したオブジェクト・コードが現行オブジェクト・ファイルに配置されます。 別のコンパイル単位で、同じテンプレートの同一のインスタンス化への参照がさらにある場合、 それらの参照は記録はされますが、冗長のインスタンス化が生成されることはありません。 -qtemplateregistry オプションを使用するのに、 特別なファイル編成は必要ありません。
場所を指定しない場合、コンパイラーは、現行作業ディレクトリーに 保管されている templateregistry ファイルにすべてのテンプレート・レジストリー情報を 保管します。 テンプレート・レジストリー・ファイルを異なるプログラム間で共用することはできません。ソースが同じディレクトリーに入っている複数のプログラムがある場合、現行作業ディレクトリーに保管されているデフォルトのテンプレート・レジストリー・ファイルに依存すると、この状態になり、誤った結果が作成される可能性があります。
-qtempinc コンパイラー・オプションと -qtemplateregistry コンパイラー・オプションは、相互に排他的です。-qtempinc を指定すると、 -qnotemplateregistry が暗黙指定されます。同様に、-qtemplateregistry を指定すると、-qnotempinc が暗黙指定されます。 ただし、-qnotempinc を指定しても、 -qtemplateregistry が暗黙指定されるわけではありません。
-qtempinc または -qtemplateregistry のいずれかを指定すると、-qtmplinst=auto が暗黙指定されます。
ファイル myprogram.C をコンパイルしてテンプレートのレジストリー情報を /tmp/mytemplateregistry ファイルに配置するには、以下のように入力します。
xlc++ myprogram.C -qtemplateregistry=/tmp/mytemplateregistry
関連情報