Namespaces
Variants

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

From cppreference.net
constexpr mdspan ( ) ;
(1) (desde C++23)
template < class ... OtherIndexTypes >
constexpr explicit mdspan ( data_handle_type p, OtherIndexTypes... exts ) ;
(2) (desde 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) (desde 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) (desde C++23)
constexpr mdspan ( data_handle_type p, const extents_type & ext ) ;
(5) (desde C++23)
constexpr mdspan ( data_handle_type p, const mapping_type & m ) ;
(6) (desde C++23)
constexpr mdspan ( data_handle_type p, const mapping_type & m,
const accessor_type & a ) ;
(7) (desde C++23)
template < class OtherElementType, class OtherExtents,

class OtherLayoutPolicy, class OtherAccessor >
constexpr explicit ( /* ver más abajo */ )
mdspan ( const mdspan < OtherElementType, OtherExtents,

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

Construye un mdspan , opcionalmente utilizando el manejador de datos proporcionado por el usuario p , el mapeo de diseño m , y el acceso a . Si se proporcionan extensiones exts o ext , se convierten a extents_type y se utilizan para inicializar el mapeo de diseño.

Contenidos

Parámetros

p - un manejador a los datos subyacentes
m - un mapeo de diseño
a - un accesor
ext - un objeto std::extents
exts - representa extensiones multidimensionales
other - otro mdspan desde el cual convertir
rhs - otro mdspan desde el cual copiar o mover

Efectos

Para los miembros de datos listados en la tabla a continuación:

Sobrecarga Inicializador para...
ptr_ map_ acc_
( 1 ) (vacío)
( 2 ) std :: move ( p ) extents_type
( static_cast < index_type >
( std :: move ( exts ) ) ... )
(vacío)
( 3 ) extents_type ( exts )
( 4 )
( 5 ) ext
( 6 ) m
( 7 ) a
( 8 ) other. ptr_ other. map_ other. acc_

Restricciones e información complementaria

1) Esta sobrecarga participa en la resolución de sobrecarga solo si todos los siguientes valores son true :
Si [ 0 , map_  . required_span_size ( ) ) no es un rango accesible de ptr_ y acc_ para los valores de map_ y acc_ después de la invocación de este constructor, el comportamiento es indefinido.
2) Esta sobrecarga participa en la resolución de sobrecarga solo si todos los siguientes valores son true :
Si [ 0 , map_  . required_span_size ( ) ) no es un rango accesible de p y acc_ para los valores de map_ y acc_ después de la invocación de estos constructores, el comportamiento es indefinido.
3,4) Estas sobrecargas participan en la resolución de sobrecarga solo si todos los siguientes valores son true :
Si [ 0 , map_  . required_span_size ( ) ) no es un rango accesible de p y acc_ para los valores de map_ y acc_ después de la invocación de estos constructores, el comportamiento es indefinido.
5) Esta sobrecarga participa en la resolución de sobrecarga solo si todos los siguientes valores son true :
Si [ 0 , map_  . required_span_size ( ) ) no es un rango accesible de p y acc_ para los valores de map_ y acc_ después de la invocación de estos constructores, el comportamiento es indefinido.
6) Esta sobrecarga participa en la resolución de sobrecarga solo si std:: is_default_constructible_v < accessor_type > es true .
Si [ 0 , m. required_span_size ( ) ) es un rango accesible de p y acc_ para el valor de acc_ después de la invocación de este constructor, el comportamiento es indefinido.
7) Si [ 0 , m. required_span_size ( ) ) no es un rango accesible de p y a , el comportamiento es indefinido.
8) La expresión dentro de explicit es equivalente a ! std:: is_convertible_v < const OtherLayoutPolicy :: template mapping < OtherExtents > & ,
mapping_type >
|| ! std:: is_convertible_v < const OtherAccessor & , accessor_type >
.
Esta sobrecarga participa en la resolución de sobrecarga solo si todos los siguientes valores son true :
Si alguno de los siguientes valores es false , el programa está mal formado:
Si [ 0 , map_  . required_span_size ( ) ) no es un rango accesible de ptr_ y acc_ para los valores de ptr_ , map_ y acc_ después de la invocación de este constructor, el comportamiento es indefinido.

Si static_extent ( r ) == std:: dynamic_extent
|| static_extent ( r ) == other. extent ( r )
es false para algún índice de rango r de extents_type , el comportamiento es indefinido.

(hasta C++26)

Si static_extent ( r ) == std:: dynamic_extent
|| static_extent ( r ) == other. extent ( r )
es false para algún índice de rango r de extents_type :

  • Si la implementación está protegida , ocurre una violación de contrato . Además, si el manejador de violación de contrato retorna bajo semántica de evaluación "observar", el comportamiento es indefinido.
  • Si la implementación no está protegida, el comportamiento es indefinido.
(desde C++26)

Ejemplo

Referencias

  • Estándar C++23 (ISO/IEC 14882:2024):
  • 24.7.3.6.2 Constructores [mdspan.mdspan.cons]

Véase también