1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#include<iostream> #include<functional> std::function<int(int)> f = [](auto n){return n + 2;}; std::function<int(int)> g = [](auto n){return n * 2;}; template<typename F, typename G> auto compose(F f, G g) { return [f,g](auto n){return f(g(n));}; } int main() { std::cout << compose(f, g)(5) << '\n'; return 0; }