7#ifndef INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_MDSPAN_SUBMDSPAN_HPP_
8#define INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_MDSPAN_SUBMDSPAN_HPP_
10#include "arene/base/compiler_support/cpp14_inline.hpp"
11#include "arene/base/constraints/constraints.hpp"
12#include "arene/base/functional/bind_front.hpp"
13#include "arene/base/mdspan/detail/do_submdspan_mapping.hpp"
14#include "arene/base/mdspan/detail/mandate_each_argtype_is_submdspan_slice.hpp"
15#include "arene/base/mdspan/is_sliceable_mapping.hpp"
16#include "arene/base/mdspan/mdspan.hpp"
17#include "arene/base/mdspan/submdspan_canonicalize_slices.hpp"
18#include "arene/base/stdlib_choice/cstddef.hpp"
19#include "arene/base/stdlib_choice/enable_if.hpp"
20#include "arene/base/stdlib_choice/move.hpp"
21#include "arene/base/tuple/apply.hpp"
22#include "arene/base/type_traits/is_invocable.hpp"
26namespace submdspan_detail {
68 class... SliceSpecifiers,
70 mdspan_detail::mandate_each_argtype_is_submdspan_slice<
typename Extents::index_type, SliceSpecifiers...>(),
72 std::enable_if_t<
sizeof...(SliceSpecifiers) == Extents::rank()>,
74 submdspan_detail::is_sliceable_mapping_v<
typename LayoutPolicy::
template mapping<Extents>>>> =
nullptr>
76 operator()(mdspan<ElementType, Extents, LayoutPolicy, AccessorPolicy>
const& src, SliceSpecifiers... slices)
const
77 noexcept(is_nothrow_invocable_v<
decltype(submdspan_canonicalize_slices), Extents
const&, SliceSpecifiers&&...>) {
78 auto const sub_map_offset = apply(
79 bind_front(mdspan_detail::do_submdspan_mapping, src.mapping()),
80 submdspan_canonicalize_slices(src.extents(), std::move(slices)...)
83 using sub_mapping =
decltype(sub_map_offset.mapping);
87 typename sub_mapping::extents_type,
88 typename sub_mapping::layout_type,
89 typename AccessorPolicy::offset_policy>{
90 src.accessor().offset(src.data_handle(), sub_map_offset.offset),
91 sub_map_offset.mapping,
92 typename AccessorPolicy::offset_policy{src.accessor()}
Definition array_exceptions_disabled.cpp:11
ARENE_CPP14_INLINE_VARIABLE(submdspan_detail::submdspan_fn, submdspan)
Copyright 2026, Toyota Motor Corporation.
Definition array_exceptions_disabled.cpp:10