作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
>>>
的词法是 >>>
。但是如果第一个 >
关闭模板参数列表会发生什么,结果应该等同于 >> >
还是 >>>
?
在下面的代码中确实很重要:
template<class T> struct X { };
void operator >>(const X<int>&, int) { }
int main() {
*new X<int>>> 1;
}
最佳答案
FDIS 的文本说
Similarly, the first non-nested >> is treated as two consecutive but distinct > tokens
它不能解除标记和 relex。所以这将是一个 >> >
。请注意,C++ 实现的输入首先被转换为预处理标记,然后这些标记被转换为 C++ 标记。因此,首先您的输入是 C++ 标记 >>>
,然后 C++ 解析器将这些标记更改为 >> >
。
Each preprocessing token is converted into a token. (2.7). The resulting tokens are syntactically and semantically analyzed and translated as a translation unit. [ Note: The process of analyzing and translating the tokens may occasionally result in one token being replaced by a sequence of other tokens (14.2). — end note ]
您不可能合并这两个尾随 >>
标记。
关于c++ - `>>>` 如何在 C++0x 中进行词法分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6235907/
我是一名优秀的程序员,十分优秀!