Nor*_*wap 12 c++ parsing templates tokenize
在C++ 11中,这是现在有效的语法:
vector<vector<float>> MyMatrix;
Run Code Online (Sandbox Code Playgroud)
而以前,它必须这样写(注意空格):
vector<vector<float> > MyMatrix;
Run Code Online (Sandbox Code Playgroud)
我的问题是标准用于允许第一个版本的修复是什么?
它可以像制作>令牌一样简单而不是>>吗?如果不是这样,那么这种方法有什么用呢?
我认为这些表格myTemplate< x>>3 >不是问题,因为你可以通过这样做来消除它们的歧义myTemplate<(x>>3)>.
Mik*_*our 18
通过在解析模板参数时向解析规则添加特殊情况来解决此问题.
C++ 11 14.2/3:解析模板参数列表时,第一个非嵌套
>被视为结束分隔符而不是大于运算符.类似地,第一个非嵌套>>被视为两个连续但不同的>标记,第一个被视为template-argument-list的结尾并完成template-id.