Sun Studio 12 Update 1:C++ 用户指南

6.3.2 显式模板实例化

编译器仅为实际使用的那些模板参数组合而隐式实例化模板。该方法不适用于构造提供模板的库。C++ 提供了显式实例化模板的功能,如以下示例所示。

6.3.2.1 模板函数的显式实例化

要显式实例化模板函数,请在 template 关键字后接函数的声明(不是定义),且函数标识符后接模板参数。


template float twice<float>(float original);

在编译器可以推断出模板参数时,模板参数可以省略。


template int twice(int original);

6.3.2.2 模板类的显式实例化

要显式实例化模板类,请在 template 关键字后接类的声明(不是定义),且在类标识符后接模板参数。


template class Array<char>;

template class String<19>;

显式实例化类时,所有的类成员也必须实例化。

6.3.2.3 模板类函数成员的显式实例化

要显式实例化模板类函数成员,请在 template 关键字后接函数的声明(不是定义),且在由模板类限定的函数标识符后接模板参数。


template int Array<char>::GetSize();

template int String<19>::length();

6.3.2.4 模板类静态数据成员的显式实例

要显式实例化模板类静态数据成员,请在 template 关键字后接成员的声明(不是定义),且在由模板类限定的成员标识符后接模板参数。


template int String<19>::overflows;