テンプレート定義を構成するには、次の例に示すように、テンプレート定義ファイルに定義を入れることもできます。
twice.h template <class Number> Number twice( Number original ); twice.cc template <class Number> Number twice( Number original ) { return original + original; } main.cc #include“twice.h” int main( ) { return twice<int>( -3 ); }
テンプレート定義ファイルにインクルードするヘッダーファイルは必ずべき等でなければなりません。
実際にはヘッダーファイルのインクルードをまったく必要としないこともよくあります (「べき等なヘッダーファイル」を参照)。
テンプレート定義ファイルには一般的にソースファイルの拡張子 (.c、.C、.cc、.cpp、.cxx) が使用されますが、テンプレート定義ファイルは実際にはヘッダーファイルです。コンパイラは、必要に応じてそれらを自動的にインクルードします。テンプレート定義ファイルは、個別にコンパイルするべきものではありません。
テンプレート宣言とテンプレート定義を別々のファイルに置く場合は、その定義ファイルの構成、名前、置き場所に細心の注意を払う必要があります。定義の置き場所を、コンパイラに対して明示的に知らせることが必要になる場合もあります。テンプレート定義の検索に関する規則については、『C ++ ユーザーズガイド』を参照してください。