32 #include <boost/variant.hpp> 40 template<
typename Head,
typename...
Tail>
43 using Head::operator();
47 : Head { std::forward<Head> (head) }
53 template<
typename Head>
56 using Head::operator();
59 : Head { std::forward<Head> (head) }
64 template<
typename R,
typename... Args>
71 template<
typename HeadVar,
typename... TailVars,
typename... Args>
72 auto Visit (
const boost::variant<HeadVar, TailVars...>& v, Args&&... args) ->
80 template<
typename T,
typename... Args>
constexpr List< T... > Tail(List< H, T... >)
VisitorBase(Head &&head, Tail &&...tail)
auto Visit(const boost::variant< HeadVar, TailVars... > &v, Args &&...args) -> decltype(detail::VisitorBase< Args... >
auto InvokeOn(T &&t, Args &&...args) -> decltype(detail::VisitorBase< Args... >