10#ifndef INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_TYPE_TRAITS_IS_TUPLE_LIKE_HPP_
11#define INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_TYPE_TRAITS_IS_TUPLE_LIKE_HPP_
16#include "arene/base/constraints/constraints.hpp"
17#include "arene/base/stdlib_choice/cstddef.hpp"
18#include "arene/base/stdlib_choice/declval.hpp"
19#include "arene/base/stdlib_choice/enable_if.hpp"
20#include "arene/base/stdlib_choice/is_convertible.hpp"
21#include "arene/base/stdlib_choice/remove_cv.hpp"
22#include "arene/base/stdlib_choice/remove_reference.hpp"
23#include "arene/base/stdlib_choice/tuple_element.hpp"
24#include "arene/base/stdlib_choice/tuple_size.hpp"
25#include "arene/base/tuple/detail/get.hpp"
26#include "arene/base/type_traits/remove_cvref.hpp"
31namespace tuple_like_detail {
36template <
typename T, std::size_t Idx>
37using get_result =
decltype(tuple_detail::get<Idx>(std::declval<T>()));
44template <
typename T, std::size_t Idx,
typename = constraints<>>
45extern constexpr bool get_result_is_tuple_element_ref =
false;
50template <
typename T, std::size_t Idx>
51extern constexpr bool get_result_is_tuple_element_ref<
54 constraints<std::enable_if_t<
55 std::is_convertible<get_result<T&, Idx>, std::tuple_element_t<Idx, T>
const&>::value &&
56 std::is_convertible<get_result<T
const&, Idx>, std::tuple_element_t<Idx, T
const>
const&>::value &&
57 std::is_convertible<get_result<T&&, Idx>, std::tuple_element_t<Idx, T>
const&>::value &&
58 std::is_convertible<get_result<T
const&&, Idx>, std::tuple_element_t<Idx, T
const>
const&>::value
Definition array_exceptions_disabled.cpp:11
constexpr bool is_pair_like_v
Type trait to check if a type implements the tuple protocol and has a std::tuple_size of 2.
constexpr bool is_tuple_like_v
Type trait to check if a type implements the tuple protocol.
Copyright 2026, Toyota Motor Corporation.
Definition array_exceptions_disabled.cpp:10