什么是会员模板?

时间:2011-10-15 23:52:57

标签: c++ templates

我可以调用成员模板,模板模板成员函数吗?或者我怎么知道把它称为成员模板?它是如何理解的?

例如:

对于案例A:我有一个类,如果我将其成员函数作为模板成员函数,我会将其称为成员模板吗?

对于案例B:我有一个模板类,如果我将其模板成员函数作为模板,我会将其称为成员模板,还是可以将其称为模板模板成员函数?

1 个答案:

答案 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来解决这种状况。