调用来自Variadic模板中一包函子的参数的函数
Call a function with parameter from a pack of functors in variadic template
i具有(lambda)函数,许多函子将variadic参数包传递到第三个函数中。签名看起来像
template<typename F, typename... G>
ret_t call(F&& func, G&&... getters);
和 F
的参数应与给定的getters
的数量一样多。
现在,我需要调用func
的getter
的返回值,以针对硬编码(constexpr)常数为另外确定。因此,未模拟的代码可能看起来像
{
return func(getters_1(0), getters_2(0), getters_3(0) /* , ... */);
}
当然,我想通过模板元编程自动化该过程。
我想避免临时数组或任何中间容器。(这不是针对该通用的,我知道Getters的返回类型。)我希望它尽可能直接地传递给该功能,以启用优化并避免浪费内存。
我本来可以将f包裹在许多级别的lambda上,每个lambda都包裹了一个参数,并希望从编译器中获得最好的参数,但是无论如何我都要求更好,更清晰的方法来做到这一点。
<</p>如果我正确理解您,您想要这样的东西:
template<typename F, typename... G>
ret_t call(F&& func, G&&... getters) {
return std::forward<F>(func)(std::forward<G>(getters)(0)...);
}
相关文章:
- 如何反转整数参数包
- 如何将enable-if与模板参数和参数包一起使用
- 模板元编程:如何将参数包组合成新的参数包
- 从函数参数包中删除最后一项
- 一种从元组/数组获取参数包的方法
- 多次解包参数包
- C++17 有效地将参数包参数与 std::array 元素相乘
- 将一包转发引用包装成元组
- 如何访问模板包参数的模板参数
- 使用参数包参数初始化"std::array"
- 调用来自Variadic模板中一包函子的参数的函数
- 您如何使用参数包参数键入功能指针类型
- 串联模板参数包,用于一单位参数
- 参数包参数消耗
- pthread_create()在Xeon Phi上每60个线程失败一次(参数无效)
- typedef中的可变模板拆包参数
- 以最小的开销删除多余的参数包参数
- 删除模板参数包的最后一种类型
- 从可变参数模板解包参数
- 是否有一种方法可以将可变参数包中的所有类指定为模板的友类,以便使用operator=