将可变参数模板参数与 lambda 参数匹配
Match variadic template args to lambda parameters
我想写一个你像这样调用的函数:
f("a", 1, [](float a ) { … });
f("a", 1, "b", 2, [](float a, float b ) { … });
f("a", 1, "b", 2, "c", 3, [](float a, float b, float c) { … });
函数的作用无关紧要。关键是要f
的每对字符*/整数参数对应于 lambda 函数的浮点参数。我得到这个:
template <typename ...Args>
void f(Args... args, std::function<void(???)> cb);
如何声明函子类型,以便其参数的基数与输入对的基数匹配?
当需要函数对象参数时,通常只允许函数接受任何类型,并让编译器在类型实际不匹配时自动发出错误。
template <typename... Args, typename F>
void f(const F& func, Args&&... args) { ... }
(请注意,我已将函数参数移到前面,因为可变参数部分将消耗所有参数。
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何将lambda作为模板类的成员函数参数
- 使用自动推导的 lambda 参数作为常量表达式
- 如果模板没有可变参数,则 Lambda 被推导出为 std::function
- 将有状态的 lambda 传递到 C 样式函数中,而无需上下文参数
- 引用捕获和在 lambda 中通过引用发送参数有什么区别 (C++)
- 将__device__ lambda 作为参数传递给 __global__ 函数
- 将 lambda 函数作为参数传递C++
- 如何将 lambda 函数作为参数发送到另一个函数
- Lambda可以用作非类型模板参数吗
- 将参数传递给泛型 lambda 时复制构造函数不正确
- 如何确定捕获不可复制参数的 lambda 的类型?
- 省略C++可变参数 lambda 中的"auto"关键字?
- 如何访问可变参数 lambda 函数参数
- 可变参数 lambda 捕获的解决方法
- 传递给多个参数 lambda 表达式的参数
- 如何编写丢弃其参数的通用可变参数 lambda
- 使用c++参数lambda函数
- 将函数模板"pass"为泛型可变参数 lambda 返回语句是好方法吗?
- c++模板非类型参数lambda函数