比较Boost.Bind返回的对象
Comparing objects returned by Boost.Bind?
可能吗?指令bool b = (boost::bind(func, 1) == boost::bind(func, 1))
不能编译,因为它"不能从'boost::_bi::bind_t'转换为'bool'"。(func
的签名为void func(int)
)
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_t似乎确实提供了一个function_equal
方法:http://www.boost.org/doc/libs/1_47_0/boost/bind/bind.hpp
相关文章:
- 如何通过另一个对象中的命令正确地从一个对象返回数据
- 如何访问从 COM 对象返回的 VARIANT 数据类型中的安全数组C++?
- 从我的对象返回静态数组
- 将unique_ptr作为<Object>unique_ptr<常量对象返回>
- 从右值对象返回成员
- 视觉对象 返回 C++ 中的双精度值
- 为什么类型为 sf::Text 的对象返回不同的 getPosition().y 和 getLocalBounds().
- std::min_element 从类对象返回意外结果
- C++无效的对象返回语义
- const引用是否延长临时对象返回的临时对象的寿命
- 将 NULL 作为对象返回时未收到任何警告
- 如何在 C# 中从 com 对象返回数组(double[])
- 从重载运算符返回引用,并使用临时对象返回表达式
- Cin 对象返回值 c++
- 将变量作为类对象返回
- 使用可更改对象返回只读的最佳方法是什么
- 如何在Cython中从另一个包装对象返回包装的c++对象
- 当对象返回时,c++动态数组被清除
- 从带有动态字段的函数、对象返回
- 从堆栈上的匿名对象返回对*this的引用