Namensräume
Varianten
Aktionen

std::mdspan<T,Extents,LayoutPolicy,AccessorPolicy>::operator[]

Von cppreference.com
< cpp‎ | container‎ | mdspan
 
 
 
 
template< class... OtherIndexTypes >
constexpr reference operator[]( OtherIndexTypes... indices ) const;
(1) (seit C++23)
template< class OtherIndexType >

constexpr reference operator[]

    ( std::span<OtherIndexType, rank()> indices ) const;
(2) (seit C++23)
template< class OtherIndexType >

constexpr reference operator[]

    ( const std::array<OtherIndexType, rank()>& indices ) const;
(3) (seit C++23)

Gibt einen Verweis auf das indicesth Element des mdspan zurück.

1) Äquivalent zu return acc_.access(ptr_, map_(static_cast<index_type>(std::move(indices))...));.
Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn
Sei I extents_type::index-cast(std::move(indices)). Dann ist das Verhalten undefiniert, wenn I kein mehrdimensionaler Index in extents() ist, d.h. map_(I) < map_.required_span_size() ist false.
2,3) Sei P ein Parameter-Pack, so dass std::is_same_v<make_index_sequence<rank()>, index_sequence<P...>> true ist, dann ist der Operator äquivalent zu return operator[](extents_type::index-cast(std::as_const(indices[P]))...);.
Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn

Inhalt

[bearbeiten] Parameter

indices - die Indizes des zuzugreifenden Elements

[bearbeiten] Rückgabewert

Ein Verweis auf das Element.

[bearbeiten] Beispiel

[bearbeiten] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3974 C++23 Überladungen (2,3) haben extents_type::index-cast nicht angewendet angewendet

[bearbeiten] Siehe auch