This does not seem to be included in boost.
However, using this answer , we can simply play our part:
template<int N, typename... Ts> using NthTypeOf = typename std::tuple_element<N, std::tuple<Ts...>>::type; template<int N, typename... Ts> auto &get(boost::variant<Ts...> &v) { using target = NthTypeOf<N, Ts...>; return boost::get<target>(v); } template<int N, typename... Ts> auto &get(const boost::variant<Ts...> &v) { using target = NthTypeOf<N, Ts...>; return boost::get<target>(v); } int main () { boost::variant<int, double> v = 3.2; std::cout << get<1>(v); }
Watch live .
Cursor overloads, of course, can be added in the same way, if necessary.
source share