いつもどこに書かれているかわからなくなるので、メモ。 35.12 Why can't I separate the definition of my templates class from its declaration and put it inside a .cpp file? 関数やクラスのテンプレートは、常に使われるソースといっしょに置いておかないと、困る。つまり、テンプレートをモジュールわけして、別のソースにすることは通常できない。なぜなら、コンパイラはそのモジュールをコンパイルするときに、具体的に何の型を生成する必要があるかがわからないため、結局なにも生成してくれない。 したがって、通常は関数テンプレートの実装を丸ごとヘッダファイル化することが行われる (Effective C++ 3rd § 30)。これは分割コンパイル (separate compilation mode