テンプレートの宣言と定義を、そのテンプレートを使用するファイルの中に含める場合、編成が定義の取り込みです。たとえば、次のようにします。
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); } |
テンプレートのヘッダーは、べき等にすることが特に重要です。「5.1.2 べき等ヘッダーファイル」を参照してください。