如何使用boost函数来转换参数类型?

斯蒂克斯

我想创建一个具有以下签名的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何转换函数类型?

如何在Java中使用接受扩展接口类型的参数的函数来创建接口?

如何使用泛型作为参数来接收以后应用特定方法的函数?

如何防止构造函数在C ++中强制转换参数类型?

类型检测:使用可变参数来正确实现一个计算均值的函数

如何使用C ++模板参数来确定类中的成员类型

如何使用流程检索函数参数类型

如何在PostgreSQL函数中转换输入参数类型

如何使用传递给Graphql ruby字段的参数来转换结果?

如何为函数类型使用模板参数?

如何编写一个scala函数来接受两种类型的参数?

如何使用函数的参数来使用对象的数据?

您如何使用命名参数来处理函数?

为什么必须使用动态输入参数来强制转换强类型函数?

如何在构造函数中传递参数来保留注册的服务使用情况?

如何使用TypeScript泛型函数来强制传入的类型上存在的属性?

如何根据参数类型转换函数的返回类型?

类型转换函数的参数

如何通过使用和创建函数来计算命令行参数中的字符数

如何使用C中没有参数且没有返回类型的函数来更新变量

如何在Python中使用函数对象和值作为参数来实现双阶乘

如何使用可以提供 NULL 值的参数来向量化 R 函数?

如何创建参数化函数来检查不同类型的值

R Shiny:如何使用 tagList() 中的参数来运行函数?

如何使用一个参数来实现函数来交换对象的私有内容

如何使用任意类型作为函数参数?

如何传递“额外”参数来组合函数

如何使用两个参数创建一个函数来查找节点是否存在?

如何编写自己的函数来接受并使用函数作为参数?