29 #include <boost/variant.hpp>
33 template <
int N,
class... Ts>
34 using NthTypeOf =
typename std::tuple_element<N, std::tuple<Ts...>>::type;
36 template <
int N,
class... Ts>
41 return boost::get<target>(
v);
44 template <
int N,
class... Ts>
49 return boost::get<target>(
v);
55 template <
int N,
class... Ts>
56 using NthTypeOf =
typename std::tuple_element<N, std::tuple<Ts...>>::type;
58 template <
int N,
class... Ts>
63 return boost::get<target>(&
v);
66 template <
int N,
class... Ts>
71 return boost::get<const target>(&
v);
74 template <
int N,
class... Ts>
79 return std::holds_alternative<target>(
v) ? &std::get<target>(
v) :
nullptr;
82 template <
int N,
class... Ts>
87 return std::holds_alternative<const target>(
v) ? &std::get<const target>(
v) :
nullptr;