我正在尝试使用当前的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 ); }
答案 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允许)。