|
template<typename CArray >
requires (is_array_v<CArray> && rank_v<CArray> == 1) |
| mdspan (CArray &) -> mdspan< remove_all_extents_t< CArray >, extents< size_t, extent_v< CArray, 0 > > > |
|
template<typename ElementType , typename IndexType , size_t... ExtentsPack> |
| mdspan (ElementType *, extents< IndexType, ExtentsPack... > const &) -> mdspan< ElementType, extents< IndexType, ExtentsPack... > > |
|
template<typename ElementType , typename... Integrals>
requires ((is_convertible_v<Integrals, size_t> && ...) && sizeof...(Integrals) > 0) |
| mdspan (ElementType *, Integrals...) -> mdspan< ElementType, dextents< size_t, sizeof...(Integrals)> > |
|
template<typename ElementType , typename MappingType > |
| mdspan (ElementType *, MappingType const &) -> mdspan< ElementType, typename MappingType::extents_type, typename MappingType::layout_type > |
|
template<class ElementType , class Extents , class Layout , class Container > |
| mdspan (mdarray< ElementType, Extents, Layout, Container >) -> mdspan< typename decltype(declval< mdarray< ElementType, Extents, Layout, Container > >().to_mdspan())::element_type, typename decltype(declval< mdarray< ElementType, Extents, Layout, Container > >().to_mdspan())::extens_type, typename decltype(declval< mdarray< ElementType, Extents, Layout, Container > >().to_mdspan())::layout_type, typename decltype(declval< mdarray< ElementType, Extents, Layout, Container > >().to_mdspan())::accessor_type > |
|
template<typename Pointer >
requires (is_pointer_v<remove_reference_t<Pointer>>) |
| mdspan (Pointer &&) -> mdspan< remove_pointer_t< remove_reference_t< Pointer > >, extents< size_t > > |
|
template<typename MappingType , typename AccessorType > |
| mdspan (typename AccessorType::data_handle_type const &, MappingType const &, AccessorType const &) -> mdspan< typename AccessorType::element_type, typename MappingType::extents_type, typename MappingType::layout_type, AccessorType > |
|