version 5.5 以降の Sun の C++ コンパイラの場合、インスタンスは特別なアドレスセクションに入り、重複しているものをリンカーが見つけて破棄します。コンパイラには、インスタンスの配置とリンケージの方法として、外部、静的、大域、明示的、半明示的のどれを使うかを指定できます。
外部 インスタンスは、大半のプログラム開発に適していますが、次の条件を満たす状況に最適です。
プログラムに含まれているインスタンス全体は小さいが、各コンパイル単位がそれぞれ参照するインスタンスが大きい。
2、3 個以上のコンパイル単位で参照されるインスタンスがほとんどない。
デフォルトである大域インスタンスは、 あらゆる開発に適していますが、さまざまなインスタンスをオブジェクトが参照する場合に最適です。
半明示的インスタンスは、 前述より多少管理の程度が緩やかなアプリケーションコンパイル環境に適しています。 ただし、このインスタンスは明示的インスタンスより大きなオブジェクトファイルを生成し、用途はかぎられています。
この節では、5 つのインスタンスの配置とリンケージの方法について説明します。インスタンスの生成に関する詳細は、「6.3 テンプレートのインスタンス化」にあります。