std::mdspan<T,Extents,LayoutPolicy,AccessorPolicy>:: mdspan
| 
           
            
             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.
      
         
          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 .
 
        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 .
 
         
          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 .
 
         
          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 .
 
         
          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 .
         
          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.
         
          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 |