如何在C++ 0x中使用`>>>`lexed?

ybu*_*ill 25 c++ c++11

>>>被贬低为>> >.但是如果第一个>关闭模板参数列表会发生什么,结果是否应该等于> > >> >>

它在以下代码中很重要:

template<class T> struct X { };

void operator >>(const X<int>&, int) { }

int main() {
    *new X<int>>> 1;
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*itb 11

FDIS的文字说

类似地,第一个非嵌套>>被视为两个连续但不同的>标记

它不能解开令牌和反射.所以这将是一个> > >.请注意,C++实现的输入首先被放入预处理标记中,然后这些标记将转换为C++标记.首先,您的输入是C++令牌>> >,然后C++解析器将这些更改为> > >.

每个预处理令牌都转换为令牌.(2.7).由此产生的标记在语法和语义上进行分析并翻译为翻译单元.[注意:分析和翻译令牌的过程有时可能导致一个令牌被一系列其他令牌替换(14.2). - 结束说明]

您无法合并这两个尾随> >令牌.