template<class Visitor, class. Variants>
constexpr see below visit(Visitor&& vis, Variants&&. vars);
template<class R, class Visitor, class. Variants>
constexpr R visit(Visitor&& vis, Variants&&. vars);
template<class Self, class Visitor>
constexpr decltype(auto) visit(this Self&& self, Visitor&& vis);