gpt4 book ai didi

c++ - 为什么将 '<' 当作 'operator<' 而不是一个标记来包围模板参数呢?

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

<分区>

我的 C++ 代码如下:

//test.cpp
#include <iostream>
using namespace std;

template <int SIZE, class T>
struct A
{
void g(int x, const T& t)
{
t.f<SIZE>(x);
}
};

struct B
{
template <int SIZE>
void f(int x) const
{
cout << SIZE << ": " << x << endl;
}
};


int main(void)
{
A<3, B> a;
B b;
a.g(9, b);
return 0;
}

我在用 g++(版本是 4.8.2 )编译时遇到了一个令人惊讶的错误:

test.cpp: In instantiation of ‘void A<SIZE, T>::g(int, const T&) [with int SIZE = 3; T = B]’:
test.cpp:27:13: required from here
test.cpp:9:12: error: invalid operands of types ‘<unresolved overloaded function type>’ and ‘int’ to binary ‘operator<’
t.f<SIZE>(x);
^

为什么需要 <作为operator<而不是包含模板参数的标记?

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