std::mdspan<T,Extents,LayoutPolicy,AccessorPolicy>::mdspan
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   constexpr mdspan();  | 
(1) | (since C++23) | 
|   template< class... OtherIndexTypes > constexpr explicit mdspan( data_handle_type p, OtherIndexTypes... exts );  | 
(2) | (since C++23) | 
|   template< class OtherIndexType, std::size_t N >     constexpr explicit(N != rank_dynamic())  | 
(3) | (since C++23) | 
|   template< class OtherIndexType, std::size_t N >     constexpr explicit(N != rank_dynamic())  | 
(4) | (since C++23) | 
|   constexpr mdspan( data_handle_type p, const extents_type& ext );  | 
(5) | (since C++23) | 
|   constexpr mdspan( data_handle_type p, const mapping_type& m );  | 
(6) | (since C++23) | 
|   constexpr mdspan( data_handle_type p, const mapping_type& m, const accessor_type& a );  | 
(7) | (since C++23) | 
|   template< class OtherElementType, class OtherExtents,           class OtherLayoutPolicy, class OtherAccessor >  | 
(8) | (since C++23) | 
|   constexpr mdspan( const mdspan& rhs ) = default;  | 
(9) | (since C++23) | 
|   constexpr mdspan( mdspan&& rhs ) = default;  | 
(10) | (since C++23) | 
Constructs an mdspan, optionally using user-supplied data handle p, layout mapping m, and accessor a. If extents exts or ext are supplied, they are converted to extents_type and used to initialize the layout mapping.
1) Constructs an empty mdspan. Value-initializes 
ptr_, map_, and acc_.
-  The behavior is undefined if 
[0,map_.required_span_size())is not an accessible range ofptr_andacc_for the values ofmap_andacc_after the invocation of this constructor. - This overload participates in overload resolution only if
 
- rank_dynamic() > 0 is true,
 - std::is_default_constructible_v<data_handle_type> is true,
 - std::is_default_constructible_v<mapping_type> is true, and
 - std::is_default_constructible_v<accessor_type> is true.
 
2) Constructs an mdspan over the underlying data referred by p with extents represented by 
exts.... Value-initializes acc_, direct-non-list-initializes ptr_ with std::move(p) and map_ with extents_type(static_cast<index_type>(std::move(exts))...).
-  The behavior is undefined if 
[0,map_.required_span_size())is not an accessible range ofptr_andacc_for the values ofmap_andacc_after the invocation of this constructor. - Let N be sizeof...(OtherIndexTypes). This overload participates in overload resolution only if
 
- (std::is_convertible_v<OtherIndexTypes, index_type> && ...) is true,
 - (std::is_nothrow_constructible<index_type, OtherIndexTypes> && ...) is true,
 - N == rank() || N == rank_dynamic() is true,
 - std::is_constructible_v<mapping_type, extents_type> is true, and
 - std::is_default_constructible_v<accessor_type> is true.
 
3,4) Constructs an mdspan over the underlying data referred by p with extents represented by pack exts. Value-initializes 
acc_, direct-non-list-initializes ptr_ with std::move(p) and map_ with extents_type(exts).
-  The behavior is undefined if 
[0,map_.required_span_size())is not an accessible range ofptr_andacc_for the values ofmap_andacc_after the invocation of this constructor. - This overload participates in overload resolution only if
 
- std::is_convertible_v<const OtherIndexTypes&, index_type> is true,
 - std::is_nothrow_constructible<index_type, const OtherIndexTypes&> is true,
 - N == rank() || N == rank_dynamic() is true,
 - std::is_constructible_v<mapping_type, extents_type> is true, and
 - std::is_default_constructible_v<accessor_type> is true.
 
5) Constructs an mdspan over the underlying data referred by p with extents represented by ext. Value-initializes 
acc_, direct-non-list-initializes ptr_ with std::move(p) and map_ with exts.
-  The behavior is undefined if 
[0,map_.required_span_size())is not an accessible range of p andacc_for the values ofmap_andacc_after the invocation of this constructor. - This overload participates in overload resolution only if
 
- std::is_constructible_v<mapping_type, const mapping_type&> is true, and
 - std::is_default_constructible_v<accessor_type> is true.
 
6) Constructs an mdspan over the underlying data referred by p with layout mapping m. Value-initializes 
acc_, direct-non-list-initializes ptr_ with std::move(p) and map_ with m.
-  The behavior is undefined if 
[0,m.required_span_size())is not an accessible range of p andacc_for the values ofacc_after the invocation of this constructor. - This overload participates in overload resolution only if std::is_default_constructible_v<accessor_type> is true.
 
7) Constructs an mdspan over the underlying data referred by p with layout mapping m and accessor a. Direct-non-list-initializes 
ptr_ with std::move(p), map_ with m and acc_ with a.
-  The behavior is undefined if 
[0,m.required_span_size())is not an accessible range of p and a after the invocation of this constructor. 
8) Converting constructor from another mdspan. Direct-non-list-initializes 
ptr_ with other.ptr_, map_ with other.map_ and acc_ with other.acc_.
- The behavior is undefined if :
 
-  
[0,map_.required_span_size())is not an accessible range ofptr_andacc_for the values ofmap_andacc_after the invocation of this constructor, or -  for each rank index 
rof extents_type, extents_type::static_extent(r) == std::dynamic_extent
|| extents_type::static_extent(r) == other.extent(r) is false. 
-  
 
- This overload participates in overload resolution only if
 
-  std::is_constructible_v<mapping_type, const OtherLayoutPolicy::
template mapping<OtherExtents>&> is true, and - std::is_constructible_v<accessor_type, const OtherAccessor&> is true.
 
-  std::is_constructible_v<mapping_type, const OtherLayoutPolicy::
 
- The program is ill-formed if:
 
-  std::is_constructible_v<data_handle_type,
const OtherAccessor::data_handle_type&> is false, or - std::is_constructible_v<extents_type, OtherExtents> is false.
 
-  std::is_constructible_v<data_handle_type,
 
-  The expression inside explicit is equivalent to:    !std::is_convertible_v<const OtherLayoutPolicy::
template mapping<OtherExtents>&, mapping_type>
|| !std::is_convertible_v<const OtherAccessor&, accessor_type> 
Parameters
| p | - | a handle to the underlying data | 
| m | - | a layout mapping | 
| a | - | an accessor | 
| ext | - |  a std::extents object
 | 
| exts | - | represents a multi-dimensional extents | 
| other | - | another mdspan to convert from | 
| rhs | - | another mdspan to copy or move from | 
Example
| This section is incomplete Reason: no example  | 
References
- C++23 standard (ISO/IEC 14882:2024):
 
- 24.7.3.6.2 Constructors [mdspan.mdspan.cons]
 
See also
| This section is incomplete |