#pragma once #include #include namespace fc { template std::function > make_fused( const std::function& f ) { return [=]( fc::tuple<> ){ return f(); }; } template std::function) > make_fused( const std::function& f ) { return [f]( fc::tuple t){ return f(t.a); }; } template std::function) > make_fused( const std::function& f ) { return [f]( fc::tuple t){ return f(t.a,t.b); }; } template std::function) > make_fused( const std::function& f ) { return [f]( fc::tuple t){ return f(t.a,t.b,t.c); }; } template std::function) > make_fused( const std::function& f ) { return [f]( fc::tuple t){ return f(t.a,t.b,t.c,t.d); }; } }