在数字常量之前预期的nonqualified-id

Mik*_*rum 5 c++ templates

template <int K>
class Wrap
{
   // stuffs
};
Run Code Online (Sandbox Code Playgroud)

如果我实例化模板有Wrap < 5>4 > p;什么问题?我在数值常量错误之前得到了预期的nonqualified-id.如何解决这个问题?

Pra*_*rav 13

更改Wrap < 5>4 > p;Wrap < (5>4) > p;

>遇到的第一个被视为模板参数列表的结尾而不是大于运算符>

ISO C++ [14.2/3]

解析template-id时,第一个非嵌套>被视为模板参数列表的结尾,而不是大于运算符.


Kon*_*lph 8

如果我实例化模板会有什么问题Wrap < 5>4 > p;

通过查看声明,这应该是直观明显的:即使对人类来说也是如此令人困惑!编译器无法处理>这里的双重含义:它是否意味着"大于"?这是否意味着"关闭模板参数列表"?事实证明,这意味着两者,并且编译器没有提示应用哪个含义.两者都是技术上有效的解析.