15 template<
typename Idx,
typename R,
typename Vis,
typename... Vars>
18 template<
size_t... indices,
typename R,
typename Vis,
typename... Vars>
25 constexpr static auto call(Vis&& visitor, Vars&&... variants) -> R {
36 return Array { (&detail::VisitHelper<Idx, R, Vis, Vars...>::call)... };
39constexpr auto visit(Vis&& visitor, Vars&&... variants) -> R {
47#pragma GCC diagnostic push
48#pragma GCC diagnostic ignored "-Warray-bounds"
52#pragma GCC diagnostic pop
55 return f(util::forward<Vis>(visitor), util::forward<Vars>(variants)...);
60constexpr auto visit(Vis&& visitor, Vars&&... variants) ->
decltype(
auto)
61requires(
requires {
visit<R>(util::forward<Vis>(visitor), util::forward<Vars>(variants)...); })
63 return visit<R>(util::forward<Vis>(visitor), util::forward<Vars>(variants)...);
Definition extents_forward_declaration.h:11
Implicit conversion for this test refers to the ability to return a value of function from a type.
Definition operations.h:89
Definition variant_like.h:37
constexpr auto invoke
Definition invoke.h:100
constexpr auto invoke_r
Definition invoke.h:103
constexpr auto get(T &&value) -> decltype(auto)
Definition get.h:8
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8
Definition erasure_cast.h:7
constexpr auto variant_index
Definition variant_index.h:27
constexpr auto visit(Vis &&visitor, Vars &&... variants) -> R
Definition visit.h:39
Definition zstring_parser.h:9
constexpr auto visit(Vis &&visitor, Vars &&... variants) -> R
Definition visit.h:39
Definition span_fixed_size.h:37
static constexpr auto call(Vis &&visitor, Vars &&... variants) -> R
Definition visit.h:25