gpt4 book ai didi

c++ - "extra qualification"错误。标准如何保证?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:01 29 4
gpt4 key购买 nike

This similar ill-fated question在它关闭之前得到了评论和简短的回答,大意是:因为那是语言是如何定义的。在这里,我要求证据在C++ 标准就是这么定义的。

gcc 4.8.1 和 clang 3.3 类似,具有默认诊断选项或更严格,为额外资格显式资格给出错误代码如:

struct x
{
int x::i; // Error: gcc/clang: "extra"
};

int ::y; // Error: gcc: "explicit", clang: "extra"

gcc 从 v4.1 开始就诊断出此类错误。但是流行的编译器不是对这些错误一致。 MSVC++ 2012(十一月 CTP)在 int::y; 处给出错误,但即使使用 /Wall,也不会给出任何诊断int x::i; - 不幸的发问者提出的那种情况 -这种差异表明 MS 编译器编写者的深思熟虑。

标准如何保证这些错误(如果有)?对 C++11 的引用标准就足够了。

答案可能是“他们遵循语法”。在这种情况下,请尝试展示它们如何遵循语法并随意使用标准的语法分类。我有一份,会重新阅读理解解释。

最佳答案

C++ 中的限定名称始终必须引用先前声明的名称。这在条款 8.3 和 3.4.3.2 中有规定。

您不能首先使用限定名称声明变量或成员 - 它最终会出现“无法解析标识符”之类的编译器错误。此类限定符旨在用于重新声明。因此要求这些名称必须找到以前声明的实体。

关于c++ - "extra qualification"错误。标准如何保证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18031285/

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