Overload 20.14.0 For C++17 and above Allows creation of a functor of overloaded lambdas etl::overload ____________________________________________________________________________________________________ Template deduction guide template overload(TOverloads...) -> overload; ____________________________________________________________________________________________________ Non-member functions template constexpr overload make_overload(TOverloads&&... overloads) Creates an etl::overload from a set of lambdas. ____________________________________________________________________________________________________ Example int result_int; double result_double; std::string result_string; auto overloaded = etl::make_overload([](int i) { result_int = i; }, [](double d) { result_double = d; }, [](const std::string& s) { result_string = s; }); template void Function(T value, TOverload&& ol) { ol(value); } Function(int(1), overloaded); // result_int == 1 Function(double(2.2), overloaded); // result_double == 2.2 Function(std::string("3"), overloaded); // result_string == "3" ____________________________________________________________________________________________________ Alternative syntax Function(int(1), etl::overload { [](int i) { result_int = i; }, [](double d) { result_double = d; }, [](const std::string& s) { result_string = s; } });