假设有以下两个功能:
#include <iostream>
#include <cstdlib> // atoi
#include <cstring> // strcmp
#include <boost/bind.hpp>
bool match1(const char* a, const char* b) {
return (strcmp(a, b) == 0);
}
bool match2(int a, const char* b) {
return (atoi(b) == a);
}
这些函数中的每一个都有两个参数,但可以通过使用(std / boost)bind
转换为只能使用一个参数的可调用对象。有点像:
boost::bind(match1, "a test");
boost::bind(match2, 42);
我希望能够从两个带有一个参数并返回bool
的函数中获取一个带有两个参数的可调用对象,并返回&amp;&amp; bool
的。参数的类型是任意的。
类似operator&&
的函数返回bool
。
答案 0 :(得分:9)
boost::bind
重载的返回类型operator &&
(以及many others)。所以你可以写
boost::bind(match1, "a test", _1) && boost::bind(match2, 42, _2);
如果要存储此值,请使用boost::function
。在这种情况下,类型将是
boost::function<bool(const char *, const char *)>
请注意,这不是boost::bind
的返回类型(未指定),但任何具有正确签名的仿函数都可以转换为boost::function
。