模板化类的模板化成员的编译失败。 VC ++有效,但G ++失败了

时间:2012-09-27 20:00:24

标签: c++

以下代码在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'

标记的行。对于我的生活,我无法弄清楚什么是错的。

1 个答案:

答案 0 :(得分:8)

GCC是正确的,因为f_的类型为foo<A>,取决于模板参数A,您需要使用{{1}来限定对method的调用关键字:

template