6#ifndef INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_TUPLE_APPLY_HPP_
7#define INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_TUPLE_APPLY_HPP_
13#include "arene/base/compiler_support/cpp14_inline.hpp"
14#include "arene/base/functional/invoke.hpp"
15#include "arene/base/stdlib_choice/cstddef.hpp"
16#include "arene/base/stdlib_choice/declval.hpp"
17#include "arene/base/stdlib_choice/forward.hpp"
18#include "arene/base/stdlib_choice/integer_sequence.hpp"
19#include "arene/base/stdlib_choice/remove_reference.hpp"
20#include "arene/base/stdlib_choice/tuple_size.hpp"
21#include "arene/base/tuple/detail/get.hpp"
29namespace apply_detail {
40template <
typename F,
typename Tuple, std::size_t... Is>
41constexpr auto apply_impl(F&& callable, Tuple&& tuple, std::index_sequence<Is...>)
noexcept(
42 noexcept(arene::base::invoke(std::declval<F&&>(), tuple_detail::get<Is>(std::declval<Tuple&&>())...))
43) ->
decltype(arene::base::invoke(std::declval<F&&>(), tuple_detail::get<Is>(std::declval<Tuple&&>())...)) {
44 return arene::base::invoke(std::forward<F>(callable), tuple_detail::get<Is>(std::forward<Tuple>(tuple))...);
58 template <
typename F,
typename Tuple>
59 constexpr auto operator()(F&& callable, Tuple&& tuple)
const noexcept(
62 std::declval<Tuple&&>(),
63 std::make_index_sequence<std::tuple_size<std::remove_reference_t<Tuple>>::value>{}
66 ->
decltype(apply_impl(
68 std::declval<Tuple&&>(),
69 std::make_index_sequence<std::tuple_size<std::remove_reference_t<Tuple>>::value>{}
72 std::forward<F>(callable),
73 std::forward<Tuple>(tuple),
74 std::make_index_sequence<std::tuple_size<std::remove_reference_t<Tuple>>::value>{}
Definition array_exceptions_disabled.cpp:11
ARENE_CPP14_INLINE_VARIABLE(apply_detail::do_apply, apply)
Copyright 2026, Toyota Motor Corporation.
Definition array_exceptions_disabled.cpp:10