Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基说明符中的全局限定_C++_C++11 - Fatal编程技术网

C++ 基说明符中的全局限定

C++ 基说明符中的全局限定,c++,c++11,C++,C++11,作为后续,我希望编译以下C++0x代码: struct x {}; struct :::x {} y {}; 然而,GCC 4.7.0 20110731告诉我: 错误:“:”标记之前的类名全局限定无效 当我向理智后退一步,给第二个UDT起个名字: struct x {}; struct a:::x {} y{}; // remember, identical to `a::: x` or `a: ::x` or `a:: :x` etc 错误是: 错误:“a”尚未声明 看起来这三个冒号的词法

作为后续,我希望编译以下C++0x代码:

struct x {};
struct :::x {} y {};
然而,GCC 4.7.0 20110731告诉我:

错误:“:”标记之前的类名全局限定无效

当我向理智后退一步,给第二个UDT起个名字:

struct x {};
struct a:::x {} y{}; // remember, identical to `a::: x` or `a: ::x` or `a:: :x` etc
错误是:

错误:“a”尚未声明

看起来这三个冒号的词法是相似的,而不是,但这能从[最终草案]标准中明确推断出来吗

这个问题可能与此有关吗

看起来这三个冒号的词法相当复杂 但这能从[最终草案]中明确推断出来吗 标准

这不再是[最终]草案了。已经是这样了。是的,可以推断:::将被解析为::后跟:。这纯粹是一个词汇问题。在C++03中,令牌被视为最长的令牌。在C++03中,将led模板关闭>>视为移位运算符。在C++0x中,这种特殊情况有例外,但一般规则仍然适用,请参见2.5.3。例如,+++将被解析为++后跟+,反之亦然

看起来这三个冒号的词法相当复杂 但这能从[最终草案]中明确推断出来吗 标准


这不再是[最终]草案了。已经是这样了。是的,可以推断:::将被解析为::后跟:。这纯粹是一个词汇问题。在C++03中,令牌被视为最长的令牌。在C++03中,将led模板关闭>>视为移位运算符。在C++0x中,这种特殊情况有例外,但一般规则仍然适用,请参见2.5.3。例如,+++将被解析为++后跟+,反之亦然,这只是解析。从§2.5.3开始

如果输入流已被解析为预处理标记(最多可达给定字符),则下一个预处理标记是可能构成预处理标记的最长字符序列,即使这会导致进一步的词法分析失败

基本上,它必须使用最长的字符序列,因此:::总是被解析为:::就像x+++y总是被解析为x+++y一样


这称为解析。

这只是解析。从§2.5.3开始

如果输入流已被解析为预处理标记(最多可达给定字符),则下一个预处理标记是可能构成预处理标记的最长字符序列,即使这会导致进一步的词法分析失败

基本上,它必须使用最长的字符序列,因此:::总是被解析为:::就像x+++y总是被解析为x+++y一样


这被称为解析。

在发布之前,我们仅有的文档是最终草案。定稿已被一致接受,但这并不妨碍它成为定稿在出版之前,我们仅有的文件是最终草案。定稿已被一致接受,但这并不妨碍它成为定稿真的,这让你晚上睡不着吗-真的,这让你晚上睡不着吗-