3#ifndef TETL_MDSPAN_LAYOUT_LEFT_HPP
4#define TETL_MDSPAN_LAYOUT_LEFT_HPP
18template <
typename Extents>
34 template <
typename OtherExtents>
38 : _extents{other.extents()}
42 template <
typename OtherExtents>
46 : _extents{other.extents()}
50 template <
typename OtherExtents>
59 return static_cast<index_type>(
extents().fwd_prod_of_extents(extents_type::rank()));
62 template <
typename... Indices>
73 requires(extents_type::rank() > 0)
76 return static_cast<index_type>(_extents.fwd_prod_of_extents(r));
79 [[nodiscard]]
static constexpr auto is_always_unique() noexcept ->
bool {
return true; }
83 [[nodiscard]]
static constexpr auto is_unique() noexcept ->
bool {
return true; }
84 [[nodiscard]]
static constexpr auto is_exhaustive() noexcept ->
bool {
return true; }
85 [[nodiscard]]
static constexpr auto is_strided() noexcept ->
bool {
return true; }
87 template <
typename OtherExtents>
90 return lhs.extents() == rhs.extents();
#define TETL_NO_UNIQUE_ADDRESS
Definition attributes.hpp:41
#define TETL_PRECONDITION(...)
Definition check.hpp:16
Definition adjacent_find.hpp:8
constexpr bool is_constructible_v
Definition is_constructible.hpp:24
etl::make_index_sequence< sizeof...(T)> index_sequence_for
Definition index_sequence.hpp:18
etl::integer_sequence< etl::size_t, Ints... > index_sequence
Definition index_sequence.hpp:12
constexpr bool is_nothrow_constructible_v
Definition is_nothrow_constructible.hpp:50
constexpr bool is_convertible_v
Definition is_convertible.hpp:46
Definition layout_left.hpp:19
layout_left layout_type
Definition layout_left.hpp:24
constexpr auto operator()(Indices... indices) const noexcept -> index_type
Definition layout_left.hpp:65
constexpr mapping() noexcept=default
typename extents_type::rank_type rank_type
Definition layout_left.hpp:23
explicit(extents_type::rank() > 0) const expr mapping(layout_stride constexpr auto operator=(mapping const &) noexcept -> mapping &=default
typename extents_type::index_type index_type
Definition layout_left.hpp:21
static constexpr auto is_exhaustive() noexcept -> bool
Definition layout_left.hpp:84
Extents extents_type
Definition layout_left.hpp:20
static constexpr auto is_always_exhaustive() noexcept -> bool
Definition layout_left.hpp:80
friend constexpr auto operator==(mapping const &lhs, mapping< OtherExtents > const &rhs) noexcept -> bool
Definition layout_left.hpp:88
static constexpr auto is_always_strided() noexcept -> bool
Definition layout_left.hpp:81
static constexpr auto is_strided() noexcept -> bool
Definition layout_left.hpp:85
static constexpr auto is_always_unique() noexcept -> bool
Definition layout_left.hpp:79
typename extents_type::size_type size_type
Definition layout_left.hpp:22
constexpr auto stride(rank_type r) const noexcept -> index_type requires(extents_type::rank() > 0)
Definition layout_left.hpp:72
static constexpr auto is_unique() noexcept -> bool
Definition layout_left.hpp:83
constexpr auto extents() const noexcept -> extents_type const &
Definition layout_left.hpp:55
constexpr auto required_span_size() const noexcept -> index_type
Definition layout_left.hpp:57
Definition layout_right.hpp:20
Definition layout_stride.hpp:20