数字常量之前的预期不合格 id

Posted

技术标签:

【中文标题】数字常量之前的预期不合格 id【英文标题】:expected unqualified-id before numeric constant 【发布时间】:2011-05-26 18:23:59 【问题描述】:
template <int K>
class Wrap

   // stuffs
;

如果我实例化像Wrap &lt; 5&gt;4 &gt; p; 这样的模板有什么问题? 我得到 expected unqualified-id before numeric constant 错误。如何解决这个问题?

【问题讨论】:

【参考方案1】:

Wrap &lt; 5&gt;4 &gt; p; 更改为Wrap &lt; (5&gt;4) &gt; p;

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

ISO C++ [14.2/3]

解析template-id时,将第一个非嵌套的&gt;作为模板的结尾 参数列表而不是大于运算符。

【讨论】:

【参考方案2】:

如果我实例化像Wrap &lt; 5&gt;4 &gt; p; 这样的模板有什么问题?

只要看一下这句话就应该很明显:即使对人类来说,它也令人困惑!编译器无法处理这里&gt; 的双重含义:它的意思是“大于”吗?这是否意味着“关闭模板参数列表”?原来,它的意思是both,编译器没有提示在哪里应用哪个含义。两者都是技术上有效的解析。

【讨论】:

【参考方案3】:

模棱两可。请改用 Wrap4)>。

【讨论】:

以上是关于数字常量之前的预期不合格 id的主要内容,如果未能解决你的问题,请参考以下文章

错误:“公共”之前的预期不合格 ID

遇到错误问题:''之前的预期不合格ID只是一个类的标题,我需要不确定是啥导致错误[关闭]

为什么我一直得到“错误:在'案件'之前预期不合格的身份'”?

SELECT 语句返回不合格的列名

引起:NoSuchBeanDefinitionException:没有 xxx 类型的合格 bean 预期至少 1 个 bean 有资格作为自动装配候选者

创建开发人员配置文件但显示不合格