gpt4 book ai didi

c++17 - 使用任意数量的参数生成对 lambda 的调用

转载 作者:行者123 更新时间:2023-12-04 11:18:43 25 4
gpt4 key购买 nike

事实证明,以下定义对我非常有用:

template<class Func, class... Args>
void apply_on_each_args(Func f, Args... args)
{
(f(args), ...);
}

基本上,参数包折叠在逗号运算符上,允许定义对带有参数的函数的多个调用。例如:
apply_on_each_args([] (auto x) { cout << x << endl; }, 1, 2, "hello");

将在 1 上调用匿名 lambda , 2"hello" .

提出了这个想法,我想做同样的事情,但传递带有两个、三个等参数的 lambda 表达式。例如,类似的东西
apply_on_each_args([] (auto x, auto y) { /* use x and y */ }, 1, 2, "hello",  "bye");

任何可以实现它的线索、技术、想法等?

最佳答案

我能想象的最好的(目前)是古老的递归方式。

举例

// ground case
template <typename Func>
void apply_on_each_2_args (Func)
{ }

// recursive case
template <typename Func, typename A0, typename A1, typename ... Args>
void apply_on_each_2_args (Func f, A0 a0, A1 a1, Args ... args)
{ f(a0, a1); apply_on_each_2_args(f, args...); }

关于c++17 - 使用任意数量的参数生成对 lambda 的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51004138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com