#include struct fiber { fiber(auto &&f) { f(); } }; void funcion() { std::cout << "1\n"; } auto lambda = [] { std::cout << "2\n"; }; struct objeto { void operator()() { std::cout << "3\n"; } }; int main() { fiber f1(funcion), f2(objeto{}), f3(lambda), f4([] { std::cout << "4\n"; }); }