gpt4 book ai didi

C++14 函数式 logical_not 函数

转载 作者:太空狗 更新时间:2023-10-29 21:15:02 25 4
gpt4 key购买 nike

我有一个逻辑表达式,比方说 !a & b。但是,我不想评估这个表达式,而是想构建一个功能树并将评估推迟到以后。ab 的值是使用函数 value 计算的,所以我们有:

auto value_of_a = std::bind(value, _1); //I need an additional argument
auto value_of_b = std::bind(value, _1);

我想使用 logical_notlogical_and 而不是使用我自己的 lambda。但是,他们对参数调用直接运算符(例如 !arg 用于 logical_not)。因此我不能使用类似的东西:

auto v = std::bind(logical_not, value_of_a); //And we still need the first argument 
//to call value_of_a

我可以绑定(bind)结果(比如某种 Future)而不是函数吗?

为了可读性,我尝试使用尽可能多的已经定义的函数。我使用的是 C++14,但它们是在 C++11 中定义的。

我知道使用 lambda 可能是最简单的方法,但我正在尝试尽可能多地利用现有的东西。但是,如果解决方案不是真的更好,我会求助于他们。

谢谢,希望它足够清楚。

最佳答案

std::bind(std::logical_and<>{}, 
std::bind(std::logical_not<>{}, value_of_a),
std::bind(value_of_b, std::placeholders::_2));

假设value_of_a是一个绑定(bind)表达式,上面的代码等价于:

( not value_of_a(#1) ) and ( value_of_b(#2) )

DEMO

关于C++14 函数式 logical_not 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39077545/

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