以下代码在Visual C ++ 2010下编译正常,但在Android NDK r8b下不在GCC 4.6下编译。
template<typename A>
struct foo
{
template<typename B>
B method()
{
return B();
}
};
template<typename A>
struct bar
{
bar()
{
f_.method<int>(); // error here
}
private:
foo<A> f_;
};
GCC给出的错误是
error : expected primary-expression before 'int'
error : expected ';' before 'int'
标记的行。对于我的生活,我无法弄清楚什么是错的。
答案 0 :(得分:8)
GCC是正确的,因为f_
的类型为foo<A>
,取决于模板参数A
,您需要使用{{1}来限定对method
的调用关键字:
template