Это следующий вопрос по этому вопросу: Lambda-Over-Lambda в С++ 14, где ответы объясняют код.
Это о лямбда, которая создает другую лямбда, которая при вызове вызывает прошедшую лямбду и передает возвращаемое значение в исходную лямбду, возвращая тем самым новый экземпляр второй лямбда.
В этом примере показано, как можно привязать лямбды.
Скопируйте исходный вопрос:
#include <cstdio>
auto terminal = [](auto term) // <---------+
{ // |
return [=] (auto func) // | ???
{ // |
return terminal(func(term)); // >---------+
};
};
auto main() -> int
{
auto hello =[](auto s){ fprintf(s,"Hello\n"); return s; };
auto world =[](auto s){ fprintf(s,"World\n"); return s; };
terminal(stdout)
(hello)
(world) ;
return 0;
}
Есть ли уже имя для этой конструкции, а если нет, то что она должна быть вызвана? Он похож на конструкции на других языках?
Примечание. Меня не интересует, действительно ли это полезно.