C++14 でYコンビネータ
#include <iostream> int main(){ auto Y = [](auto f){ return [=](auto... args){ return f(f, args...); }; }; auto f = Y([](auto f, int n)->int{ return n == 1 ? 1 : n + f(f, n-1); }); std::cout << f(10) << std::endl; return 0; } /* output: 55 */
多相ラムダばんざーい。