std::mdspan<T,Extents,LayoutPolicy,AccessorPolicy>::mdspan
De cppreference.com
<tbody>
</tbody>
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(/* see below */) 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 identificador de datos proporcionado por el usuario p, el mapeo de diseño m y el descriptor de acceso a. Si se proporcionan dimensiones exts o ext, se convierten a extents_type y se utilizan para inicializar el mapeo de diseño.
1) Construye un
mdspan vacío. Inicializa por valor ptr_, map_, y acc_.
- El comportamiento no está definido si
[0,map_.required_span_size())no es un rango accesible deptr_yacc_para los valores demap_yacc_después de la invocación de este constructor. - Esta sobrecarga solo participa en la resolución de sobrecargas si
rank_dynamic() > 0estrue,std::is_default_constructible_v<data_handle_type>estrue,std::is_default_constructible_v<mapping_type>estrue, ystd::is_default_constructible_v<accessor_type>estrue.
2) Construye un
mdspan sobre los datos subyacentes a los que hace referencia p para las dimensiones representadas por exts.... Inicializa por valor acc_, inicializa directamente (no por lista) ptr_ con std::move(p) y map_ con extents_type(static_cast<index_type>(std::move(exts))...).
- El comportamiento no está definido si
[0,map_.required_span_size())no es un rango accesible deptr_yacc_para los valores demap_yacc_después de la invocación de este constructor. - Sea
Nsizeof...(OtherIndexTypes). Esta sobrecarga solo participa en la resolución de sobrecargas si
(std::is_convertible_v<OtherIndexTypes, index_type> && ...)estrue,(std::is_nothrow_constructible<index_type, OtherIndexTypes> && ...)estrue,N == rank() || N == rank_dynamic()estrue,std::is_constructible_v<mapping_type, extents_type>estrue, ystd::is_default_constructible_v<accessor_type>estrue.
3,4) Construye un
mdspan sobre los datos subyacentes a los que hace referencia p para las dimensiones representadas por el paquete exts. Inicializa por valor acc_, inicializa directamente (no por lista) ptr_ con std::move(p) y map_ con extents_type(exts).
- El comportamiento no está definido si
[0,map_.required_span_size())no es un rango accesible deptr_yacc_para los valores demap_yacc_después de la invocación de este constructor. - Esta sobrecarga solo participa en la resolución de sobrecargas si
std::is_convertible_v<const OtherIndexTypes&, index_type>estrue,std::is_nothrow_constructible<index_type, const OtherIndexTypes&>estrue,N == rank() || N == rank_dynamic()estrue,std::is_constructible_v<mapping_type, extents_type>estrue, ystd::is_default_constructible_v<accessor_type>estrue.
5) Construye un
mdspan sobre los datos subyacentes a los que hace referencia p para las dimensiones representadas por ext. Inicializa por valor acc_, inicializa directamente (no por lista) ptr_ con std::move(p) y map_ con exts.
- El comportamiento no está definido si
[0,map_.required_span_size())no es un rango accesible depyacc_para los valores demap_yacc_después de la invocación de este constructor. - Esta sobrecarga solo participa en la resolución de sobrecargas si
std::is_constructible_v<mapping_type, const mapping_type&>estrue, ystd::is_default_constructible_v<accessor_type>estrue.
6) Construye un
mdspan sobre los datos subyacentes a los que hace referencia p con mapeo de diseño m. Inicializa por valor acc_, inicializa directamente (no por lista) ptr_ con std::move(p) y map_ con m.
7) Construye un
mdspan sobre los datos subyacentes a los que hace referencia p con mapeo de diseño m y descriptor de acceso a. Inicializa directamente (no por lista) ptr_ con std::move(p), map_ con m y acc_ con a.
- El comportamiento no está definido si
[0,m.required_span_size())no es un rango accesible depyadespués de la invocación de este constructor.
8) Convirtiendo constructor de otro
mdspan. Inicializa directamente (no por lista) ptr_ con other.ptr_, map_ con other.map_ y acc_ con other.acc_.
- El comportamiento no está definido si:
[0,map_.required_span_size())no es un rango accesible deptr_yacc_para los valores demap_yacc_después de la invocación de este constructor, o- para cada índice de rango
rdeextents_type,extents_type::static_extent(r) == std::dynamic_extent|| extents_type::static_extent(r) == other.extent(r)esfalse.
- Esta sobrecarga solo participa en la resolución de sobrecargas si
std::is_constructible_v<mapping_type, const OtherLayoutPolicy::template mapping<OtherExtents>&>estrue, ystd::is_constructible_v<accessor_type, const OtherAccessor&>estrue.
- El programa está mal formado si:
std::is_constructible_v<data_handle_type,const OtherAccessor::data_handle_type&>esfalse, ostd::is_constructible_v<extents_type, OtherExtents>esfalse.
- La expresión dentro de
explicites equivalente a:!std::is_convertible_v<const OtherLayoutPolicy::template mapping<OtherExtents>&, mapping_type>|| !std::is_convertible_v<const OtherAccessor&, accessor_type>
Parámetros
| p | - | Un identificador de los datos subyacentes. |
| m | - | Un mapeo de diseño. |
| a | - | Un descriptor de acceso. |
| ext | - | Un objeto std::extents.
|
| exts | - | Representa el tamaño multidimensional. |
| other | - | Otro mdspan desde el que convertir. |
| rhs | - | Otro mdspan para copiar o mover. |
Ejemplo
| Esta sección está incompleta Razón: sin ejemplo |
Referencias
- El estándar C++23 (ISO/IEC 14882:2023):
- 24.7.3.6.2 Constructors [mdspan.mdspan.cons]
Véase también
| Esta sección está incompleta |