gpt4 book ai didi

c++ - 可以使用 T::operator< 作为模板函数的默认参数吗?

转载 作者:行者123 更新时间:2023-11-30 01:37:55 25 4
gpt4 key购买 nike

我想知道是否可以使用 operator<或其他一些作为某些功能的默认参数。

一些愚蠢的琐碎的例子:

template <typename T>
void compare(std::function<bool(T, T)> lessThan = T::operator<);

我尝试为 int 做这件事作为T , 但我当然会收到一个错误:

error: ‘operator<’ is not a member of ‘int’

直到operator<我真的不知道是否可行据我所知,这不是静态函数。

您是否知道是否可以以及如何完成?

任何帮助将不胜感激! :)

最佳答案

在模板函数中使用带有模板参数的 std::function 几乎总是一个坏主意。

std::function 是类型删除,模板参数是类型推导。类型删除和类型推导是彼此对立的。两者都做就像 build 一座房子只是为了炸毁它并 build 另一座房子。

template <class T, class C=std::less<T>>
void compare(C&& c = {});

如果你想更换比较器你可以做

compare<int>( some_other_comparator );

关于c++ - 可以使用 T::operator< 作为模板函数的默认参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48851607/

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