W3cubDocs

/C++

deduction guides for std::mdspan

Defined in header <mdspan>
template< class CArray >
  requires(std::is_array_v<CArray> && std::rank_v<CArray> == 1)
  mdspan( CArray& )
    -> mdspan<std::remove_all_extents_t<CArray>,
              std::extents<std::size_t, std::extent_v<CArray, 0>>>;
(1) (since C++23)
template< class Pointer >
  requires(std::is_pointer_v<std::remove_reference_t<Pointer>>)
  mdspan( Pointer&& )
    -> mdspan<std::remove_pointer_t<std::remove_reference_t<Pointer>>,
              std::extents<size_t>>;
(2) (since C++23)
template< class ElementType, class... Integrals >
  requires((std::is_convertible_v<Integrals, std::size_t> && ...) &&
           sizeof...(Integrals) > 0)
  explicit mdspan( ElementType*, Integrals... )
    -> mdspan<ElementType, std::dextents<std::size_t, sizeof...(Integrals)>>;
(3) (since C++23)
template< class ElementType, class OtherIndexType, std::size_t N >
  mdspan( ElementType*, std::span<OtherIndexType, N> )
    -> mdspan<ElementType, std::dextents<std::size_t, N>>;
(4) (since C++23)
template< class ElementType, class OtherIndexType, std::size_t N >
  mdspan( ElementType*, const std::array<OtherIndexType, N>& )
    -> mdspan<ElementType, std::dextents<std::size_t, N>>;
(5) (since C++23)
template< class ElementType, class IndexType, std::size_t... ExtentsPack >
  mdspan( ElementType*, const std::extents<IndexType, ExtentsPack...>& )
    -> mdspan<ElementType, std::extents<IndexType, ExtentsPack...>>;
(6) (since C++23)
template< class ElementType, class MappingType >
  mdspan( ElementType*, const MappingType& )
    -> mdspan<ElementType, typename MappingType::extents_type,
              typename MappingType::layout_type>;
(7) (since C++23)
template< class MappingType, class AccessorType >
  mdspan( const typename AccessorType::data_handle_type&, const MappingType&,
         const AccessorType& )
    -> mdspan<typename AccessorType::element_type,
              typename MappingType::extents_type,
              typename MappingType::layout_type, AccessorType>;
(8) (since C++23)

Example

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/mdspan/deduction_guides