#include <iostream>
// How to parameterize this lambda and use it in the second lambda?
auto print = []() { std::cout << "in print" << std::endl; };
auto repeat = [](auto function, const int num_repeat) {
int ctr = 0;
while (ctr++ < num_repeat) {
function();
}
};
int main() {
repeat(print, 3);
return 0;
}
В приведенном выше примере c ++ я использовал лямбда-функцию print
(которая не принимает никаких аргументов) в другой лямбде repeat
в качестве аргумента. Это работает со следующим выводом:
$ ./a.out
in print
in print
in print
Однако я хочу передать аргумент (или список переменных аргументов) в print
и использовать его в repeat
. Является ли это возможным? Например, модифицированный print
будет выглядеть так:
auto print = [](std::string& name) { std::cout << "hello " << name << std::endl; };