数值常数之前的预期unqualified-id

问题描述

|
template <int K>
class Wrap
{
   // stuffs
};
如果将模板实例化为
Wrap < 5>4 > p;
怎么了? 在数字常量错误之前,我得到了预期的unqualid-id。如何解决这个问题?     

解决方法

  如果我像ѭ1一样实例化模板怎么办? 仅通过查看以下语句就应该在直觉上显而易见:甚至对于人类来说也令人困惑!在这里,编译器无法应付
>
的双重含义:它的意思是“大于”吗?这是否意味着“关闭模板参数列表”?事实证明,这意味着两者兼而有之,并且编译器没有提示在何处应用哪种含义。两者都是技术上有效的解析。     ,将
Wrap < 5>4 > p;
更改为
Wrap < (5>4) > p;
遇到的第一个“ 3”被当作模板参数列表的结尾,而不是大于运算符“ 3” ISO C ++ [14.2 / 3]   解析模板ID时,将第一个非嵌套的
>
作为模板的结尾     参数列表而不是大于运算符。     ,含糊不清。请使用Wrap <(5> 4)>。