Denis Yaroshevskiy
template <typename ...Ts>
struct variant {
union { Ts ... elems; } data;
index_type idx;
};
auto visit(auto&& vis, auto&& ... vs) {
switch ( ... ) {
case 0: return vis(get<0>(vs) ....);
case 1: ...
...
}
};