使用分离模型 让模板定义和声明在不同的文件里可能会导致链接错误。
为了解决这种问题,我们把模板的声明和定义都放在同一个头文件里。
例如:
#ifdef MYFIRST_HPP
#define MYFIRST_HPP
#include <iostream>
#include <typeinfo>
template <typename T>
void print_typeof(T const&);
template <typename T>
void print_typeof(T const& x)
{
}
#endif
注:
包含模型。
一:显式实例化
template void print_typeof<double>(double const&);
显示实例化函数和类模板 可以避免上面提到的链接错误,但是不能重复实例化。
二:整合包含模型和显式实例化
三:分离模型
利用导出模板机制,关键字export。
四:模板和内联
函数模板缺省情况下不是内联的,需要显式定义,但对于类定义内部的函数,与非模板一样被隐式内联了。