【发布时间】:2015-08-14 01:07:46
【问题描述】:
我正在尝试编写将执行以下操作的代码:假设我们调用了自定义绑定函数
auto bind_obj = bind(some_func, _1, "test")
在我们拥有之后
auto res = bind_obj(42)
其中函数 some_func:
int some_func(int val, string test)
如何将占位符与实际函数调用中提供的参数匹配,即 bind_obj(...)?
换句话说,是否可以遍历 std::tuple (这里的参数和占位符)和可变参数包(函数参数)到:
- 推断函数some_func的返回类型;
- 制作正确的 std::tuple 以便在 some_func() 调用中进一步使用它?
我正在尝试不使用 boost 和 std::functional 来做到这一点。我认为,我的主要问题是我不明白如何在运行时使用参数构建元组(所有占位符都正确替换)并推断返回类型。
我在 STL "functional.h" 中看到了 _Mu 模板结构,但它看起来过于复杂且过载。
【问题讨论】:
-
<functional>标准头文件是 C++ 的一部分。 “纯 C++”是什么意思? -
我想手动编写参数和占位符之间的匹配(很可能,使用模板,是的)以上绑定只是通常使用类绑定函数的示例
-
对不起,我认错了,应该是 bind(some_func, _1, "test") 然后:bind_obj(42)
-
至少,只有如何同时迭代可变参数包(这里只有函数参数)和 std::tuple (包含函数参数和占位符),才能以正确的顺序构建具有函数参数的新元组
标签: c++ c++11 variadic-templates template-argument-deduction tuple-packing