问题描述
|
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)>。