【发布时间】:2018-02-18 12:22:21
【问题描述】:
我想知道是否可以使用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::less<T>{}- 或std::less<>{}如果您有 C++14 - 作为默认参数。 -
另外,不要命名可以做任何事情的谓词
lessThan和don't usestd::functionas the parameter type here。
标签: c++ templates parameters c++17