我可以调用成员模板,模板模板成员函数吗?或者我怎么知道把它称为成员模板?它是如何理解的?
例如:
对于案例A:我有一个类,如果我将其成员函数作为模板成员函数,我会将其称为成员模板吗?
对于案例B:我有一个模板类,如果我将其模板成员函数作为模板,我会将其称为成员模板,还是可以将其称为模板模板成员函数?
答案 0 :(得分:7)
对于这两种情况,您将其称为成员模板。
template<typename T>
struct A {
// this is not a template
void f();
// but this is a member template
template<typename T> void g();
};
它是一个成员模板,因为它是一个模板成员。成员函数f
不是模板,而是类模板的成员函数。在C ++中,遗憾的是这个术语没有明确的术语,因此在标准中制定某些规则以应用模板,但也适用于类模板的成员函数。许多规则需要获得所有欢乐的组合,如
function template
member function of class template
member function of nested class of a class template
member function template
...
同样适用于类模板的成员类。已经提出调用类模板的成员函数/类 temploid 或类似的东西。 Work is under way来解决这种状况。