di 0.1.0
|
#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.
Namespaces | |
namespace | di |
namespace | di::vocab |
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 |