gpt4 book ai didi

c++ - 使用模板比较器的完整示例

转载 作者:行者123 更新时间:2023-11-30 05:24:44 25 4
gpt4 key购买 nike

我正在尝试使用 std::lessstd::greater 或模板参数驱动的模板类。这是对 this question 的跟进因为,答案没有提供完整的示例,我无法成功使用模板比较器。

#include <functional>
#include <algorithm>

template <typename C>
class Test
{
int compare(int l, int n, int x, int y)
{
public:
bool z = C(x, y);
if(l < n && z)
{
return 1;
}
else
{
return 2;
}
}
};

int main() {
Test<std::less<int>> foo;
Test<std::greater<int>> bar;
foo.compare(1, 2, 3, 4);
bar.compare(1, 2, 3, 4);
}

最佳答案

请注意 C (即 std::less<int>std::greater<int> )是类型名称,而不是实例。 bool z = C(x, y);C==std::less<int> 时将不起作用,因为 C(x, y)将被解释为 std::less<int> 的构造,这将失败,因为 std::less没有这样的构造函数,并且std::less无法转换为 bool .

您的意思可能是调用 operator()C 的实例上, 你可以把它改成

bool z = C()(x, y);

关于c++ - 使用模板比较器的完整示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38558746/

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