Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在两个编译器上进行了测试,惊讶地发现它们都毫无怨言地支持以下定义:
class A { A(); }; A::A::A() {} ^^^
请注意,这也适用于方法,尽管它在声明被过度限定时被标记。
问题:
更新细节:
如果最初的问题不清楚或太短:我很好奇为什么定义允许多余的资格(强调也在上面添加)。
Clang an Apple 的 GCC 4.2 + LLVM 是编译器
是的,这是允许的(§9/2):
类名也被插入到类本身的范围内;这被称为注入类名。出于访问检查的目的,注入的类名被视为公共成员名。
有关导致类名注入的原因的信息,您可能需要阅读N0444。