我想创建一个具有以下签名的boost函数对象:
void (int, boost::uuid);
但是,我想将其绑定到以下形式的函数:
void (SomeType, boost::uuid)
SomeType参数来自另一个函数调用,因此,如果我直接调用它,它将看起来像:
SomeType myOtherFunction(int);//Prototype
...
myFunction(myOtherFunction(int), myUUID);
换句话说,我希望顶层函数对象完全隐藏SomeType的概念以及用户对myOtherFunction的调用。有没有一种方法可以通过boost :: bind调用创建一个或多个boost :: function对象?
功能组成:Live on Coliru
#include <boost/uuid/uuid.hpp>
struct SomeType {};
SomeType myOtherFunction(int) { return SomeType(); }
void foo(SomeType, boost::uuids::uuid) {}
#include <boost/bind.hpp>
#include <boost/function.hpp>
int main()
{
boost::function<void(int, boost::uuids::uuid)> composed;
composed = boost::bind(foo, boost::bind(myOtherFunction, _1), _2);
}
无论如何,在c ++ 11中,您[](int i, uuid u) { return foo(myOtherFunction(i), u); }
当然会写
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句