C ++标准规定:
模板定义了一系列类或函数。
template-declaration: exportopt template < template-parameter-list > declaration
模板声明中的声明应
- 声明或定义函数或类,或
- 定义成员函数,成员类或类模板的静态数据成员或嵌套在类模板中的类,或
- 定义类或类模板的成员模板。
这些要点中的第三个让我感到困惑。在这种情况下,“类的成员模板”的示例是什么?成员函数或嵌套类定义将包含在前两个类别之一中。当然,没有一个模板化的数据成员?这是指typedef?
答案 0 :(得分:7)
类的成员模板是一个成员函数,它本身就是一个模板,如下所示:
class test {
template <typename T> void foo(); // member template of class
};
template <typename T>
void test::foo<T>() {} // definition
template <typename T>
class test2 {
template <typename U> void foo(); // member template of class template
};
template <typename T>
template <typename U>
void test2<T>::foo<U>() {} // definition