5#ifndef INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_TYPE_LIST_REMOVE_NTH_HPP_
6#define INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_TYPE_LIST_REMOVE_NTH_HPP_
8#include "arene/base/stdlib_choice/cstddef.hpp"
9#include "arene/base/stdlib_choice/integer_sequence.hpp"
10#include "arene/base/type_list/at.hpp"
11#include "arene/base/type_traits/type_identity.hpp"
19namespace remove_nth_detail {
28template <
template <
class...>
class List,
class... Ts, std::size_t... Js>
29auto select_elements_from_impl(type_identity<List<Ts...>>, std::index_sequence<Js...>)
30 -> List<type_lists::at_t<List<Ts...>, Js>...>;
37template <
typename List,
typename Indices>
38using select_elements_from_t =
decltype(select_elements_from_impl(type_identity<List>{}, Indices{}));
45template <std::size_t IndexToRemove, std::size_t... Js>
46auto remove_nth_helper(std::index_sequence<Js...>) -> std::index_sequence<((Js < IndexToRemove) ? Js : (Js + 1))...>;
52template <
typename List, std::size_t Index>
59template <
template <
class...>
class List,
class... Ts, std::size_t Index>
60class remove_nth_impl<List<Ts...>, Index> {
62 static_assert(Index <
sizeof...(Ts),
"The index must be less than the size of the list");
65 using type = select_elements_from_t<
67 decltype(remove_nth_helper<Index>(std::make_index_sequence<
sizeof...(Ts) - 1>{}))>;
79template <
class List, std::size_t Index>
Definition apply_all.hpp:14
Definition array_exceptions_disabled.cpp:11
Copyright 2026, Toyota Motor Corporation.
Definition array_exceptions_disabled.cpp:10