Namespaces
Variants

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

From cppreference.net
template < class ... OtherIndexTypes >
constexpr reference operator [ ] ( OtherIndexTypes... indices ) const ;
(1) (depuis C++23)
template < class OtherIndexType >

constexpr reference operator [ ]

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

constexpr reference operator [ ]

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

Retourne une référence au indices ème élément du mdspan.

1) Équivalent à return acc_  . access ( ptr_ , map_  ( static_cast < index_type > ( std :: move ( indices ) ) ... ) ) ; .
Cette surcharge participe à la résolution de surcharge seulement si toutes les valeurs suivantes sont true :

Si extents_type :: index-cast  ( std :: move ( indices ) ) n'est pas un index multidimensionnel dans extents ( ) , le comportement est indéfini.

(jusqu'en C++26)

Si extents_type :: index-cast  ( std :: move ( indices ) ) n'est pas un index multidimensionnel dans extents ( ) :

  • Si l'implémentation est renforcée , une violation de contrat se produit. De plus, si le gestionnaire de violation de contrat retourne sous la sémantique d'évaluation "observer", le comportement est indéfini.
  • Si l'implémentation n'est pas renforcée, le comportement est indéfini.
(depuis C++26)
2,3) Soit P un pack de paramètres tel que std:: is_same_v < std:: make_index_sequence < rank ( ) > ,
std:: index_sequence < P... >>
soit true , équivalent à return operator [ ] ( extents_type :: index-cast  ( std:: as_const ( indices [ P ] ) ) ... ) ; .
Cette surcharge participe à la résolution de surcharge seulement si toutes les valeurs suivantes sont true :

Table des matières

Paramètres

indices - les indices de l'élément à accéder

Valeur de retour

Une référence à l'élément.

Exemple

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 3974 C++23 les surcharges (2,3) n'appliquaient pas extents_type:: index-cast appliquent

Voir aussi