11 template<
typename F,
typename Tup,
typename Ind>
12 struct TupleForEachValid;
14 template<
size_t... indices,
typename F,
typename Tup>
15 struct TupleForEachValid<F, Tup, meta::ListV<indices...>> {
16 constexpr static bool value = (concepts::Invocable<F&, meta::TupleValue<Tup, indices>> && ...);
20template<
typename F, concepts::TupleLike Tup>
21requires(detail::TupleForEachValid<F, Tup, meta::MakeIndexSequence<meta::TupleSize<Tup>>>::value)
24 [&]<
typename... Types>(Types&&... values) {
27 util::forward<Tup>(tuple));
30template<
typename F, concepts::TupleLike Tup>
31requires(detail::TupleForEachValid<F, Tup, meta::MakeIndexSequence<meta::TupleSize<Tup>>>::value)
34 [&]<
typename... Types>(Types&&... values) {
37 util::forward<Tup>(tuple));
constexpr auto invoke
Definition invoke.h:100
constexpr auto value
Definition value.h:34
constexpr auto apply(F &&f, Tup &&tuple) -> decltype(detail::apply_impl(meta::MakeIndexSequence< meta::TupleSize< Tup > > {}, util::forward< F >(f), util::forward< Tup >(tuple)))
Definition apply.h:22
constexpr void tuple_for_each_reverse(F &&function, Tup &&tuple)
Definition tuple_for_each.h:32
constexpr void tuple_for_each(F &&function, Tup &&tuple)
Definition tuple_for_each.h:22
constexpr auto apply_reverse(F &&f, Tup &&tuple) -> decltype(detail::apply_impl(meta::MakeReverseIndexSequence< meta::TupleSize< Tup > > {}, util::forward< F >(f), util::forward< Tup >(tuple)))
Definition apply.h:30
Definition any_storable.h:9