Namespaces
Variants

std::mdspan<T,Extents,LayoutPolicy,AccessorPolicy>:: mdspan

From cppreference.net
constexpr mdspan ( ) ;
(1) (depuis C++23)
template < class ... OtherIndexTypes >
constexpr explicit mdspan ( data_handle_type p, OtherIndexTypes... exts ) ;
(2) (depuis C++23)
template < class OtherIndexType, std:: size_t N >

constexpr explicit ( N ! = rank_dynamic ( ) )

mdspan ( data_handle_type p, std:: span < OtherIndexType, N > exts ) ;
(3) (depuis C++23)
template < class OtherIndexType, std:: size_t N >

constexpr explicit ( N ! = rank_dynamic ( ) )
mdspan ( data_handle_type p,

const std:: array < OtherIndexType, N > & exts ) ;
(4) (depuis C++23)
constexpr mdspan ( data_handle_type p, const extents_type & ext ) ;
(5) (depuis C++23)
constexpr mdspan ( data_handle_type p, const mapping_type & m ) ;
(6) (depuis C++23)
constexpr mdspan ( data_handle_type p, const mapping_type & m,
const accessor_type & a ) ;
(7) (depuis C++23)
template < class OtherElementType, class OtherExtents,

class OtherLayoutPolicy, class OtherAccessor >
constexpr explicit ( /* voir ci-dessous */ )
mdspan ( const mdspan < OtherElementType, OtherExtents,

OtherLayoutPolicy, OtherAccessor > & other ) ;
(8) (depuis C++23)
constexpr mdspan ( const mdspan & rhs ) = default ;
(9) (depuis C++23)
constexpr mdspan ( mdspan && rhs ) = default ;
(10) (depuis C++23)

Construit un mdspan , en utilisant optionnellement le gestionnaire de données fourni par l'utilisateur p , le mappage de disposition m , et l'accesseur a . Si les étendues exts ou ext sont fournies, elles sont converties en extents_type et utilisées pour initialiser le mappage de disposition.

Table des matières

Paramètres

p - un descripteur vers les données sous-jacentes
m - un mapping de disposition
a - un accesseur
ext - un objet std::extents
exts - représente des dimensions multidimensionnelles
other - un autre mdspan à convertir
rhs - un autre mdspan à copier ou déplacer

Effets

Pour les membres de données listés dans le tableau ci-dessous :

Surcharge Initialiseur pour...
ptr_ map_ acc_
( 1 ) (vide)
( 2 ) std :: move ( p ) extents_type
( static_cast < index_type >
( std :: move ( exts ) ) ... )
(vide)
( 3 ) extents_type ( exts )
( 4 )
( 5 ) ext
( 6 ) m
( 7 ) a
( 8 ) other. ptr_ other. map_ other. acc_

Contraintes et informations supplémentaires

1) Cette surcharge participe à la résolution de surcharge uniquement si toutes les valeurs suivantes sont true :
Si [ 0 , map_  . required_span_size ( ) ) n'est pas un intervalle accessible de ptr_ et acc_ pour les valeurs de map_ et acc_ après l'invocation de ce constructeur, le comportement est indéfini.
2) Cette surcharge participe à la résolution de surcharge seulement si toutes les valeurs suivantes sont true :
Si [ 0 , map_  . required_span_size ( ) ) n'est pas une plage accessible de p et acc_ pour les valeurs de map_ et acc_ après l'invocation de ces constructeurs, le comportement est indéfini.
3,4) Ces surcharges participent à la résolution de surcharge uniquement si toutes les valeurs suivantes sont true :
Si [ 0 , map_  . required_span_size ( ) ) n'est pas une plage accessible de p et acc_ pour les valeurs de map_ et acc_ après l'invocation de ces constructeurs, le comportement est indéfini.
5) Cette surcharge participe à la résolution de surcharge seulement si toutes les valeurs suivantes sont true :
Si [ 0 , map_  . required_span_size ( ) ) n'est pas une plage accessible de p et acc_ pour les valeurs de map_ et acc_ après l'invocation de ces constructeurs, le comportement est indéfini.
6) Cette surcharge participe à la résolution de surcharge uniquement si std:: is_default_constructible_v < accessor_type > est true .
Si [ 0 , m. required_span_size ( ) ) est une plage accessible de p et acc_ pour la valeur de acc_ après l'invocation de ce constructeur, le comportement est indéfini.
7) Si [ 0 , m. required_span_size ( ) ) n'est pas une plage accessible de p et a , le comportement est indéfini.
8) L'expression à l'intérieur de explicit est équivalente à ! std:: is_convertible_v < const OtherLayoutPolicy :: template mapping < OtherExtents > & ,
mapping_type >
|| ! std:: is_convertible_v < const OtherAccessor & , accessor_type >
.
Cette surcharge participe à la résolution de surcharge seulement si toutes les valeurs suivantes sont true :
Si l'une des valeurs suivantes est false , le programme est mal formé :
Si [ 0 , map_  . required_span_size ( ) ) n'est pas une plage accessible de ptr_ et acc_ pour les valeurs de ptr_ , map_ et acc_ après l'invocation de ce constructeur, le comportement est indéfini.

Si static_extent ( r ) == std:: dynamic_extent
|| static_extent ( r ) == other. extent ( r )
est false pour un certain index de rang r de extents_type , le comportement est indéfini.

(jusqu'à C++26)

Si static_extent ( r ) == std:: dynamic_extent
|| static_extent ( r ) == other. extent ( r )
est false pour un certain index de rang r de extents_type :

  • 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)

Exemple

Références

  • Norme C++23 (ISO/CEI 14882:2024) :
  • 24.7.3.6.2 Constructeurs [mdspan.mdspan.cons]

Voir aussi