#include #include #include template std::function compose(std::function f, std::function g) { return [f,g](A x) { return f(g(x)); }; } int main() { std::function f = sin; std::function g = asin; std::cout << compose(f, g)(0.5) << std::endl; return 0; }