std::mdspan<T,Extents,LayoutPolicy,AccessorPolicy>::mdspan
constexpr explicit mdspan( data_handle_type p, OtherIndexTypes... exts );
    constexpr explicit(N != rank_dynamic())
    constexpr explicit(N != rank_dynamic())
        mdspan( data_handle_type p,
const accessor_type& a );
          class OtherLayoutPolicy, class OtherAccessor >
    constexpr explicit(/* see below */)
        mdspan( const mdspan<OtherElementType, OtherExtents,
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.
Contents
[edit] Parameters
std::extents object
[edit] Effects
For the data members listed in the table below:
- If the corresponding initializer is empty, the data member is value-initialized.
 - If the corresponding intiializer is not empty, the data member is direct-non-list-initialized with that initializer.
 
| Overload | Initializer for... | ||
|---|---|---|---|
ptr_ 
 | 
map_ 
 | 
acc_ 
 | |
| (1) | (empty) | ||
| (2) | std::move(p) | extents_type (static_cast<index_type> (std::move(exts))...)  | 
(empty) | 
| (3) | extents_type(exts) | ||
| (4) | |||
| (5) | ext | ||
| (6) | m | ||
| (7) | a | ||
| (8) | other.ptr_ 
 | 
other.map_ 
 | 
other.acc_ 
 | 
[edit] Constraints and supplement information
- rank_dynamic() > 0
 - std::is_default_constructible_v <data_handle_type>
 - std::is_default_constructible_v <mapping_type>
 - std::is_default_constructible_v <accessor_type>
 
[0, map_  .required_span_size()) is not an accessible range of ptr_  and acc_  for the values of map_  and acc_  after the invocation of this constructor, the behavior is undefined.- (std::is_convertible_v <OtherIndexTypes, index_type> && ...)
 - (std::is_nothrow_constructible <index_type, OtherIndexTypes> && ...)
 - sizeof...(OtherIndexTypes) == rank() || sizeof...(OtherIndexTypes) == rank_dynamic()
 - std::is_constructible_v <mapping_type, extents_type>
 - std::is_default_constructible_v <accessor_type>
 
[0, map_  .required_span_size()) is not an accessible range of p and acc_  for the values of map_  and acc_  after the invocation of these constructors, the behavior is undefined.- std::is_convertible_v <const OtherIndexType&, index_type>
 - std::is_nothrow_constructible_v <index_type, const OtherIndexType&>
 - N == rank() || N == rank_dynamic()
 - std::is_constructible_v <mapping_type, extents_type>
 - std::is_default_constructible_v <accessor_type>
 
[0, map_  .required_span_size()) is not an accessible range of p and acc_  for the values of map_  and acc_  after the invocation of these constructors, the behavior is undefined.- std::is_constructible_v <mapping_type, const extents_type&>
 - std::is_default_constructible_v <accessor_type>
 
[0, map_  .required_span_size()) is not an accessible range of p and acc_  for the values of map_  and acc_  after the invocation of these constructors, the behavior is undefined.[0, m.required_span_size()) is an accessible range of p and acc_  for the value of acc_  after the invocation of this constructor, the behavior is undefined.[0, m.required_span_size()) is not an accessible range of p and a, the behavior is undefined.mapping_type>
|| !std::is_convertible_v <const OtherAccessor&, accessor_type>.
-  std::is_constructible_v 
<mapping_type, const OtherLayoutPolicy::template mapping<OtherExtents>&> - std::is_default_constructible_v <accessor_type>
 
- std::is_constructible_v <data_handle_type, const OtherAccessor::data_handle_type&>
 - std::is_constructible_v <extents_type, OtherExtents>
 
[0, map_  .required_span_size()) is not an accessible range of ptr_  and acc_  for the values of ptr_ , map_  and acc_  after the invocation of this constructor, the behavior is undefined.If static_extent(r) == std::dynamic_extent 
    || static_extent(r) == other.extent(r) is false for some rank index r of extents_type, the behavior is undefined.
If static_extent(r) == std::dynamic_extent 
    || static_extent(r) == other.extent(r) is false for some rank index r of extents_type:
- If the implementation is hardened, a contract violation occurs. Moreover, if the contract-violation handler returns under "observe" evaluation semantic, the behavior is undefined.
 - If the implementation is not hardened, the behavior is undefined.
 
[edit] Example
Reason: no example
[edit] References
- C++23 standard (ISO/IEC 14882:2024):
 
- 24.7.3.6.2 Constructors [mdspan.mdspan.cons]