如何通过std::not_fn实现逻辑非谓词函数的组合与运用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计873个文字,预计阅读时间需要4分钟。
它将原词的调峰结果用!operator()(包含一层,但关键在于:
-
std::not_fn不关心你传的是 lambda、函数指针、成员函数指针,还是重载了operator()的 functor - 它内部用完美转发处理参数,支持任意数量和类型的实参(包括右值)
- 别试图对返回
void的可调用对象用std::not_fn——!void无意义,编译不过
常见错误:误以为 std::not_fn 能直接作用于重载函数名
写 std::not_fn(std::isalnum) 看似合理,但 std::isalnum 是重载函数族(int(int) 和 bool(unsigned short) 等),编译器无法推导具体选哪个,报错类似:error: reference to overloaded function could not be resolved。
本文共计873个文字,预计阅读时间需要4分钟。
它将原词的调峰结果用!operator()(包含一层,但关键在于:
-
std::not_fn不关心你传的是 lambda、函数指针、成员函数指针,还是重载了operator()的 functor - 它内部用完美转发处理参数,支持任意数量和类型的实参(包括右值)
- 别试图对返回
void的可调用对象用std::not_fn——!void无意义,编译不过
常见错误:误以为 std::not_fn 能直接作用于重载函数名
写 std::not_fn(std::isalnum) 看似合理,但 std::isalnum 是重载函数族(int(int) 和 bool(unsigned short) 等),编译器无法推导具体选哪个,报错类似:error: reference to overloaded function could not be resolved。

