Oracle Solaris Studio 12.2:C++ 用户指南

5.2.1 包括的模板定义

在将模板的声明和定义放在使用该模板的文件中时,组织是包括定义的组织。例如:

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 幂等头文件。)