#include "di/function/index_dispatch.h"#include "di/function/invoke.h"#include "di/meta/algorithm.h"#include "di/meta/constexpr.h"#include "di/platform/compiler.h"#include "di/vocab/array/array.h"#include "di/vocab/md/prelude.h"#include "di/vocab/variant/variant_like.h"#include "di/vocab/variant/variant_value.h"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 |