比较 Boost.Bind 返回的对象?

发布于 2024-11-27 01:06:26 字数 175 浏览 0 评论 0原文

是否可以?指令 bool b = (boost::bind(func, 1) == boost::bind(func, 1)) 无法编译,因为它“无法从 'boost::_bi:: 转换”将“bind_t”绑定到“bool””。 (func 的签名是 void func(int)。)

Is it possible? The instruction bool b = (boost::bind(func, 1) == boost::bind(func, 1)) does not compile because it "cannot convert from 'boost::_bi::bind_t' to 'bool'". (The signature of func is void func(int).)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

涫野音 2024-12-04 01:06:26

Boost.Bind 重载关系运算符以返回嵌套的绑定表达式。因此,在您的代码中 boost::bind(func, 1) == boost::bind(func, 1) 返回一个空值(因为绑定表达式中没有占位符)函子,当调用时,返回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 接口的一部分。 Tt 不会是一个非常有用的功能,并且在(非常)一般情况下是不可判定

Boost.Bind overloads the relational operators to return nested bind expressions. Thus in your code boost::bind(func, 1) == boost::bind(func, 1) returns a nullary (since there is no placeholders in your bind expressions) functor that, when called, returns func(1) == func(1). This is a convenient feature for predicates, amongst other uses:

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);

In addition, the returned object is not convertible to bool and this is why it won't compile (disregarding the issue that it doesn't do what you want).

What you want to do is not part of the Boost.Bind interface. Tt would not be a very useful feature and in the (very) general case is undecidable.

你没皮卡萌 2024-12-04 01:06:26

不知道这是否是“官方支持的功能”,但bind_t似乎确实提供了一个function_equal方法:http://www.boost.org/doc/libs/1_47_0/boost/bind/bind.hpp

Don't know if this is "oficially supported functionality" but bind_t does seem to provide a function_equal method: http://www.boost.org/doc/libs/1_47_0/boost/bind/bind.hpp

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文