gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:53:05 25 4
gpt4 key购买 nike

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

为标记线。对于我的生活,我无法弄清楚出了什么问题。

最佳答案

GCC 是正确的,因为 f_类型为 foo<A>这取决于模板参数 A ,您需要限定对 method 的调用与 template关键词:

f_.template method<int>();  // This will work

关于c++ - 模板化类的模板化成员编译失败。 VC++ 有效,但 G++ 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12629164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com