テンプレート関数の明示的インスタンス生成で解説したように,テンプレートクラスとかテンプレート関数を明示的にインスタンス化しておくことで, ヘッダファイルの肥大化(コンパイル速度の低下) 望ましくない実装の公開 といった問題を避けられる.一方,テンプレートクラスやテンプレート関数で,ある型についてのみ特殊な実装を行う,「テンプレートの特殊化」という技術がある(過去の記事で何度か使っている).本記事では,インスタンス化と特殊化を同時に使うと,思わぬ落し穴にはまることを,サンプルを交えながら解説する. 以下の内容は標準規格などで確認できていないので,g++(4.3.3)に限った話かもしれないことを注意しておく. まず,以下の3つのファイルからなるユニット unit1 を用意する: ヘッダ: /*! \file unit1.h \date Feb.19, 2009 */ #ifndef unit1