#pragma once namespace wizardry { // taken from cppreference: https://en.cppreference.com/w/cpp/utility/variant/visit template struct overloaded : Ts ... { using Ts::operator()...; }; // explicit deduction guide (not needed as of C++20) template overloaded(Ts...) -> overloaded; }