C ++:绑定的结合?

时间:2010-04-14 15:35:36

标签: c++ boost bind

假设有以下两个功能:

#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

1 个答案:

答案 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