错误:'模板'(作为消歧器)仅允许在模板中使用

时间:2013-01-11 23:29:47

标签: templates gcc

我正在尝试使用当前的c编译器编译一些旧代码(robocup足球模拟服务器,大约2003年):

gcc-c++-4.7.2-2.fc17.x86_64

以下函数会在此问题的主题中生成错误。关于如何修改函数以消除错误的任何建议都将非常感激。

int getInt( const std::string& param ) const
{ return rcss::conf::Builder::template get< int >( param ); }

2 个答案:

答案 0 :(得分:1)

我假设Builder是一个类,get是该类的静态模板方法。

关键字template告诉编译器get是模板方法。但是,gcc表示如果该关键字不在模板中,则不应使用该关键字。

因此,删除template关键字应该会有效。

答案 1 :(得分:1)

来自C ++ 03,14.2.4

  

成员模板专精的名称出现在后缀表达式中的.->之后,或 nested-name-specifier 在 qualified-id 中,postfix-expression或qualified-id显式依赖于template-parameter(14.6.2),成员模板名称必须以关键字模板作为前缀。

在您的示例中,rcss::conf::Builder并未明确依赖模板参数,这会导致template关键字无用(VC允许)。