Iros
 
Loading...
Searching...
No Matches
visit.h File Reference

Go to the source code of this file.

Classes

struct  di::vocab::detail::VisitHelper< Idx, R, Vis, Vars >
 
struct  di::vocab::detail::VisitHelper< meta::List< Constexpr< indices >... >, R, Vis, Vars... >
 

Namespaces

namespace  di
 
namespace  di::vocab
 
namespace  di::vocab::detail
 

Functions

template<typename R, typename Vis, concepts::VariantLike... Vars, typename Indices = meta::CartesianProduct<meta::AsList<meta::MakeIndexSequence<meta::VariantSize<Vars>>>...>>
requires (requires { []<concepts::TypeList... Idx>(meta::List<Idx...>) { return Array { (&detail::VisitHelper<Idx, R, Vis, Vars...>::call)... }; }(Indices {}); })
constexpr auto di::vocab::visit (Vis &&visitor, Vars &&... variants) -> R
 
template<typename Vis, concepts::VariantLike... Vars, typename R = decltype(function::invoke(util::declval<Vis>(), util::get<0>(util::declval<Vars>())...))>
constexpr auto di::vocab::visit (Vis &&visitor, Vars &&... variants) -> decltype(auto) requires(
 
template<typename R, typename Vis, concepts::VariantLike... Vars, typename Indices = meta::CartesianProduct<meta::AsList<meta::MakeIndexSequence<meta::VariantSize<Vars>>>...>>
requires (requires { []<concepts::TypeList... Idx>(meta::List<Idx...>) { return Array { (&detail::VisitHelper<Idx, R, Vis, Vars...>::call)... }; }(Indices {}); })
constexpr auto di::visit (Vis &&visitor, Vars &&... variants) -> R