我正在尝试使用当前的 c 编译器编译一些旧代码(大约 2003 年的 robocup 足球模拟服务器):
gcc-c++-4.7.2-2.fc17.x86_64
下面的函数会在这个问题的主题中产生错误。任何关于如何修改函数以消除错误的建议将不胜感激。
int getInt( const std::string& param ) const
{ return rcss::conf::Builder::template get< int >( param ); }
我假设这Builder
是一个类,并且get
是该类的静态模板方法。
关键字template
告诉编译器这get
是一个模板方法。但是,gcc
如果它不在模板中,则表示您不应该使用该关键字。
因此,删除template
关键字应该可以使其工作。
从 C++03、14.2.4
当成员模板特化的名称出现在postfix -expression
.
之后或之后,或者在限定 id中的nested-name-specifier之后,并且 postfix-expression 或qualified-id 显式依赖于模板参数(14.6.2 ),成员模板名称必须以关键字模板为前缀。->
在您的示例中,rcss::conf::Builder
不明确依赖于模板参数,这使得template
关键字无用(VC 允许)。