gpt4 book ai didi

c++ - C++ 的什么特性允许模板类在没有模板参数的情况下引用它们自己?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:54 25 4
gpt4 key购买 nike

给定:

template <typename T>
class C {
C & operator ++ () { ... }
};

为什么/怎么样 C允许声明 C 类型的变量和函数而不是被要求命名 C<T> ?在处理包含许多参数的模板之前,我并没有真正考虑过这个问题,因为这会使拼写“ self 类型”变得不方便。

有什么我应该知道的怪癖吗?

最佳答案

[n3290: 14.6.1/1]: Like normal (non-template) classes, class templates have an injected-class-name (Clause 9). The injected-class-name can be used as a template-name or a type-name. When it is used with a template-argument-list, as a template-argument for a template template-parameter, or as the final identifier in the elaborated-type-specifier of a friend class template declaration, it refers to the class template itself. Otherwise, it is equivalent to the template-name followed by the template-parameters of the class template enclosed in <>.

从表面上看,这只是一个方便的功能。

关于c++ - C++ 的什么特性允许模板类在没有模板参数的情况下引用它们自己?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8031823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com