gpt4 book ai didi

c++ - std::min/std::max 作为模板比较器

转载 作者:搜寻专家 更新时间:2023-10-31 00:30:00 25 4
gpt4 key购买 nike

this example 启发使用 std::less/std::greater .是否可以使用 std::minstd::max作为模板比较器?

以下示例抛出错误:

error: type/value mismatch at argument 1 in template parameter list for 'template<class C> class Test'

#include <functional>
#include <algorithm>

template <typename C>
class Test
{
public:
int compare(int x, int y)
{
return C()(x, y);
}
};

int main() {
Test<std::min<int>> foo;
Test<std::max<int>> bar;
foo.compare(1, 2);
bar.compare(1, 2);
}

最佳答案

备注std::minstd::max是函数模板。如果要将它们用作模板参数,则需要将它们声明为 non-type template parameter ,比如函数指针:

template <const int& (*C)(const int&, const int&)>
class Test
{
public:
int compare(int x, int y)
{
return C(x, y);
// ~~ Note no () here
}
};

关于c++ - std::min/std::max 作为模板比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38602629/

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