“类的成员模板”是什么意思?请参阅 C++标准?

发布于 2024-10-18 00:41:50 字数 362 浏览 0 评论 0 原文

C++ 标准规定:

模板定义一系列类或函数。

模板声明:
   导出优化模板<模板参数列表>宣言

模板声明中的声明应

  • 声明或定义函数或类,或者
  • 定义类模板或嵌套在类模板中的类的成员函数、成员类或静态数据成员,或者
  • 定义类的成员模板或类模板。

这些要点中的第三点让我感到困惑。在这种情况下,“类的成员模板”的示例是什么?成员函数或嵌套类定义将包含在前两个类别之一中。当然不存在模板化数据成员这样的东西吗?这是指 typedef 吗?

The C++ standard states:

A template defines a family of classes or functions.

template-declaration:
   exportopt template < template-parameter-list > declaration

The declaration in a template-declaration shall

  • declare or define a function or a class, or
  • define a member function, a member class or a static data member of a class template or of a class nested within a class template, or
  • define a member template of a class or class template.

The third of these bullet points is what is confusing me. What is an example of "a member template of a class" in this context? A member function or nested class definition would be included in one of the first two categories. Surely there's no such thing as a templatised data member? Is this referring to typedefs?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鹿港小镇 2024-10-25 00:41:50

类的成员模板是一个成员函数,它本身就是一个模板,如下所示:

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

A member template of a class is a member function that is itself a template, like these:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文