C++ 有没有一种方法可以将参数求值为函子?

C++ 有没有一种方法可以将参数求值为函子?,c++,c++11,lambda,functor,negation,C++,C++11,Lambda,Functor,Negation,给定foo这是一个向量,我想用它来评估它的内容。但我真正想要检查的是每个元素的计算结果是否为true 我可以通过使用andnone\u of来实现这一点,但我不希望使用双重否定,而且编写lambda:[](const auto param)->bool{return param;} 该标准是否为我提供了一个可以实现我想要的功能的函子?您正在寻找的是添加到C++20中的函子。它接受一个参数并返回不变的参数。它operator()看起来像 template<typename T> con

给定
foo
这是一个
向量
,我想用它来评估它的内容。但我真正想要检查的是每个元素的计算结果是否为
true

我可以通过使用and
none\u of
来实现这一点,但我不希望使用双重否定,而且编写lambda:
[](const auto param)->bool{return param;}


该标准是否为我提供了一个可以实现我想要的功能的函子?

您正在寻找的是添加到C++20中的函子。它接受一个参数并返回不变的参数。它
operator()
看起来像

template<typename T>
constexpr T&& operator()( T&& t ) const noexcept;
模板
constexpr T&&operator()(T&&T)const noexcept;
它回来了

std::forward<T>(t)
std::forward(t)

不确定否决票来自哪里。我记得不久前看到一个关于这个的问题。我认为这最终是可能的,或者这是我的回忆。我认为所有的标准函数对象都可以找到。我从来没有想过这一点,但似乎一个恒等函子会很有用。看起来没有。
std::bind(std::equal_to{},_1,true)
:)Lambda看起来没那么糟糕……那么就用std::forward怎么样?@rubenvb你可以,但你必须将它转换到一个看起来非常难看的函数指针上。啊,是的,在模板算法中不幸重载了函数作为函子的故事。@NathanOliver除此之外,从C++20开始,我们很可能不再允许使用
std::forward
(也不允许使用标准库中大多数函数模板的实例)的地址。(加上故事讲述者的功劳。)