gpt4 book ai didi

c++ 编译器将模板语法视为 '<' 运算符

转载 作者:太空狗 更新时间:2023-10-29 20:30:00 26 4
gpt4 key购买 nike

我正在尝试编译以下代码:

struct A {
template<int N> static void a() {}
};

template<> void A::a<5>() {}

template<class T>
struct B {
static void b() {
T::a<5>();
}
};

void test() {
A::a<5>();
B<A>::b();
}

编译器解释<T::a<5>作为运算符(operator) < ,导致错误:

invalid operands of types ‘<unresolved overloaded function type>’ and ‘int’ to binary ‘operator<’

有没有办法显式实例化T::a<5>没有编译器错误?谢谢。

gcc 版本 4.5.1 20100924(红帽 4.5.1-4)(海湾合作委员会)

最佳答案

是的,将该行更改为:

T::template a<5>();

编译器不知道 T::a 是否是一个函数(因为它的 template 性质)。通过提及 template,您可以明确通知编译器。这个问题问了很多次,这里是one of them .

关于c++ 编译器将模板语法视为 '<' 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8321472/

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