[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:
- (is_convertible_v<OtherIndexTypes, index_type> && ...) is true,
- (is_nothrow_constructible_v<index_type, OtherIndexTypes> && ...) is true, and
- sizeof...(OtherIndexTypes) == rank() is true.
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:
- is_convertible_v<const OtherIndexType&, index_type> is true, and
- is_nothrow_constructible_v<index_type, const OtherIndexType&> is true.
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_);