[mdspan.mdspan.members] (original) (raw)

23 Containers library [containers]

23.7 Views [views]

23.7.3 Multidimensional access [views.multidim]

23.7.3.6 Class template mdspan [mdspan.mdspan]

23.7.3.6.3 Members [mdspan.mdspan.members]

template<class... OtherIndexTypes> constexpr reference operator[](OtherIndexTypes... indices) const;

Constraints:

Let I be extents_type​::​index-cast(std​::​move(indices)).

Hardened preconditions: I is a multidimensional index in extents().

[Note 1:

This implies that_map__(I) < map_.required_span_size()is true.

— _end note_]

Effects: Equivalent to:return acc_.access(ptr_, map_(static_cast<index_type>(std::move(indices))...));

template<class OtherIndexType> constexpr reference operator[](span<OtherIndexType, rank()> indices) const;template<class OtherIndexType> constexpr reference operator[](const array<OtherIndexType, rank()>& indices) const;

Constraints:

Effects: Let P be a parameter pack such thatis_same_v<make_index_sequence<rank()>, index_sequence<P...>> is true.

Equivalent to:return operator[](extents_type::_index-cast_(as_const(indices[P]))...);

constexpr size_type size() const noexcept;

Preconditions: The size of the multidimensional index space extents()is representable as a value of type size_type ([basic.fundamental]).

Returns: extents().fwd-prod-of-extents(rank()).

constexpr bool empty() const noexcept;

Returns: trueif the size of the multidimensional index space extents() is 0, otherwise false.

friend constexpr void swap(mdspan& x, mdspan& y) noexcept;

Effects: Equivalent to:swap(x.ptr_, y.ptr_); swap(x.map_, y.map_); swap(x.acc_, y.acc_);