什么是成员模板?

What is Member templates?

本文关键字:成员 什么      更新时间:2023-10-16

可以调用模板成员,模板成员函数吗?或者我怎么知道叫它成员模板,它有什么意义?

例如:

对于案例A:我有一个类,如果我把它的成员函数设为模板成员函数,我会称它为成员模板吗?

对于案例B:我有一个模板类,如果我把它的模板成员函数设为模板,我是叫它成员模板还是叫它模板模板成员函数?

对于这两种情况,都称其为成员模板。

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或类似的东西。不过,解决这个问题的工作正在进行中。