gpt4 book ai didi

c++ - 比较 Boost.Bind 返回的对象?

转载 作者:行者123 更新时间:2023-11-30 02:08:24 25 4
gpt4 key购买 nike

这可能吗?指令 bool b = (boost::bind(func, 1) == boost::bind(func, 1)) 无法编译,因为它“无法从‘boost::_bi::bind_t' 到 'bool'”。 (func 的签名是 void func(int)。)

最佳答案

Boost.Bind 重载关系运算符以返回嵌套的绑定(bind)表达式。因此在你的代码中 boost::bind(func, 1) == boost::bind(func, 1) 返回一个 nullary(因为你的绑定(bind)表达式中没有占位符)仿函数,当调用, 返回 func(1) == func(1)。这是谓词的一项便利功能,除此之外还有其他用途:

typeded std::pair<T, U> pair_type;
// find pair where the first element is equal to 3
std::find_if(begin, end, boost::bind(&pair_type::first, _1) == 3);

此外,返回的对象不能转换为 bool,这就是它无法编译的原因(忽略它没有按照您的意愿行事的问题)。

您想做的不是 Boost.Bind 接口(interface)的一部分。 Tt 不是一个非常有用的功能,在(非常)一般情况下是 undecidable .

关于c++ - 比较 Boost.Bind 返回的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6885610/

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