テンプレートを使用するファイルの中にテンプレートの宣言と定義が含まれていれば、そのファイルは定義取り込み型の構成です。次にその例を示します。
main.cc template <class Number> Number twice( Number original );
template <class Number> Number twice( Number original )
{ return original + original; }
int main( )
{ return twice<int>( -3 ); }
テンプレートを使用するファイルがテンプレートの宣言と定義の両方を含むファイルをインクルードしている場合、そのテンプレートを使用するファイルも定義取り込み型の構成になります。次にその例を示します。
twice.h #ifndef TWICE_H
#define TWICE_H
template <class Number> Number twice( Number original );
template <class Number> Number twice( Number original )
{ return original + original; }
#endif
main.cc #include“twice.h”
int main( )
{ return twice( -3 ); }
ここでは、テンプレートヘッダーをべき等にすることが重要です (「べき等なヘッダーファイル」を参照)。