libstdc++
Namespaces | Typedefs | Enumerations | Functions | Variables
mdspan File Reference

Go to the source code of this file.

Namespaces

 std
 

Typedefs

template<typename _Slice >
using std::__mdspan::__full_extent_t = std::full_extent_t
 
using std::__mdspan::_SliceView = span< const _SliceKind, __rank >
 
using std::__mdspan::_SubExts = decltype(__sub_exts)
 
using std::__mdspan::_Trait = _SubMdspanMapping< __side, __is_padded_mapping< _Mapping > >
 
template<typename _IndexType , size_t _Rank>
using std::dextents = decltype(__mdspan::__build_dextents_type< _IndexType >(make_index_sequence< _Rank >()))
 
template<size_t _Rank, typename _IndexType = size_t>
using std::dims = dextents< _IndexType, _Rank >
 

Enumerations

enum class  _LayoutSide { __left , __right , __unknown }
 
enum class  _SliceKind { __extent_slice , __unit_stride_slice , __full , __collapsing }
 

Functions

consteval bool std::__mdspan::__all_dynamic (std::span< const size_t > __extents)
 
consteval bool std::__mdspan::__all_static (std::span< const size_t > __extents)
 
template<typename _IndexType , size_t... _Counts>
auto std::__mdspan::__build_dextents_type (integer_sequence< size_t, _Counts... >) -> extents< _IndexType,((void) _Counts, dynamic_extent)... >
 
template<typename _IndexType , typename _Slice >
constexpr auto std::__mdspan::__canonical_index (_Slice &&__slice)
 
template<typename _IndexType , typename _OffsetType , typename _SpanType , typename _StrideType >
constexpr auto std::__mdspan::__canonical_range_slice (_OffsetType __offset, _SpanType __span, _StrideType __stride)
 
template<typename _IndexType , size_t _Extent, typename _OIndexType >
constexpr void std::__mdspan::__check_inrange_index (const extents< _IndexType, _Extent > &__ext, const _OIndexType &__idx)
 
template<typename _IndexType , size_t _Extent, typename _OIndexType >
constexpr void std::__mdspan::__check_valid_index (const extents< _IndexType, _Extent > &__ext, const _OIndexType &__idx)
 
template<typename _IndexType , size_t _Extent, typename _Slice >
constexpr void std::__mdspan::__check_valid_slice (const extents< _IndexType, _Extent > &__ext, const _Slice &__slice)
 
template<typename _Extents , typename... _Slices>
constexpr void std::__mdspan::__check_valid_slices (const _Extents &__exts, const _Slices &... __slices)
 
template<typename _Tp , size_t _Nm>
consteval bool std::__mdspan::__contains_zero (const array< _Tp, _Nm > &__exts) noexcept
 
template<typename _Tp , size_t _Nm>
constexpr bool std::__mdspan::__contains_zero (span< _Tp, _Nm > __exts) noexcept
 
template<typename _Extents >
constexpr span< const typename _Extents::index_type > std::__mdspan::__dynamic_extents (const _Extents &__exts, size_t __begin=0, size_t __end=_Extents::rank()) noexcept
 
template<size_t _K, typename _Extents , typename _Slice >
constexpr _Extents::index_type std::__mdspan::__dynamic_slice_extent (const _Extents &__exts, _Slice __slice)
 
template<typename _Extents >
constexpr bool std::__mdspan::__empty (const _Extents &__exts) noexcept
 
template<typename _Extents >
constexpr _Extents::index_type std::__mdspan::__extents_prod (const _Extents &__exts, size_t __sta_prod, size_t __begin, size_t __end) noexcept
 
template<size_t _Index, typename _Extents >
constexpr auto std::__mdspan::__extract_extent (const _Extents &__exts)
 
template<typename _Extents >
constexpr _Extents::index_type std::__mdspan::__fwd_prod (const _Extents &__exts, size_t __begin, size_t __end) noexcept
 
template<typename _Extents >
constexpr _Extents::index_type std::__mdspan::__fwd_prod (const _Extents &__exts, size_t __r) noexcept
 
template<typename _IndexType , size_t _Nm>
consteval _IndexType std::__mdspan::__fwd_prod (span< const _IndexType, _Nm > __values)
 
template<typename _PaddedMapping >
consteval size_t std::__mdspan::__get_static_stride ()
 
return std::__impl (__mdspan::__slice_cast< _IndexType >(__raw_slices)...)
 
return std::__mdspan::__impl (std::make_index_sequence< __inv_map.size()>())
 
template<typename _IndexType , typename _OIndexTypeRef >
constexpr _IndexType std::__mdspan::__index_type_cast (_OIndexTypeRef &&__other)
 
template<typename _IndexType , typename... _Slices>
consteval auto std::__mdspan::__inv_map_rank ()
 
consteval bool std::__mdspan::__is_block (span< const _SliceKind > __slice_kinds, size_t __block_size)
 
template<typename _Extents >
constexpr bool std::__mdspan::__is_representable_extents (const _Extents &__exts) noexcept
 
template<typename _IndexType , typename _OIndexType >
consteval bool std::__mdspan::__is_representable_integer (_OIndexType __value)
 
template<typename _IndexType >
constexpr bool std::__mdspan::__is_representable_least_multiple (size_t __x, size_t __y)
 
template<size_t _PaddedStride, typename _Extents , typename _LayoutTraits >
consteval bool std::__mdspan::__is_representable_padded_size ()
 
constexpr size_t std::__mdspan::__least_multiple (size_t __x, size_t __y)
 
template<typename _Extents , typename... _Indices>
constexpr _Extents::index_type std::__mdspan::__linear_index_left (const _Extents &__exts, _Indices... __indices) noexcept
 
template<typename _Extents , typename _Stride , typename... _Indices>
constexpr _Extents::index_type std::__mdspan::__linear_index_leftpad (const _Extents &__exts, _Stride __stride, _Indices... __indices)
 
template<typename _Extents , typename... _Indices>
constexpr _Extents::index_type std::__mdspan::__linear_index_right (const _Extents &__exts, _Indices... __indices) noexcept
 
template<typename _Extents , typename _Stride , typename... _Indices>
constexpr _Extents::index_type std::__mdspan::__linear_index_rightpad (const _Extents &__exts, _Stride __stride, _Indices... __indices)
 
template<typename _Mapping , typename... _Indices>
constexpr _Mapping::index_type std::__mdspan::__linear_index_strides (const _Mapping &__m, _Indices... __indices) noexcept
 
template<typename _Slice >
consteval _SliceKind std::__mdspan::__make_slice_kind ()
 
template<typename... _Slices>
consteval array< _SliceKind, sizeof...(_Slices)> std::__mdspan::__make_slice_kind_array ()
 
template<typename _Mapping >
consteval _LayoutSide std::__mdspan::__mapping_side ()
 
template<typename _Mapping >
constexpr _Mapping::index_type std::__mdspan::__offset (const _Mapping &__m) noexcept
 
template<_LayoutSide _Side, size_t _Nm>
static consteval size_t std::__mdspan::__padded_block_begin (span< const _SliceKind, _Nm > __slice_kinds, size_t __sub_rank)
 
static consteval size_t std::__mdspan::__padded_block_begin_generic (span< const _SliceKind > __slice_kinds, size_t __sub_rank)
 
template<typename _Extents >
constexpr _Extents::index_type std::__mdspan::__rev_prod (const _Extents &__exts, size_t __r) noexcept
 
template<typename _Extents >
constexpr _Extents::index_type std::__mdspan::__size (const _Extents &__exts) noexcept
 
template<typename _Slice >
constexpr auto std::__mdspan::__slice_begin (_Slice __slice)
 
template<typename _IndexType , typename _Slice >
constexpr auto std::__mdspan::__slice_cast (_Slice &&__slice)
 
template<typename _Extents >
constexpr const array< size_t, _Extents::rank()> & std::__mdspan::__static_extents () noexcept
 
template<typename _Extents >
constexpr span< const size_t > std::__mdspan::__static_extents (size_t __begin, size_t __end) noexcept
 
template<typename _Extents , typename _IndexType = typename _Extents::index_type>
requires __is_extents< _Extents > consteval _IndexType std::__mdspan::__static_quotient (_IndexType __nom=__gnu_cxx::__int_traits< _IndexType >::__max)
 
template<typename _IndexType >
consteval _IndexType std::__mdspan::__static_quotient (std::span< const size_t > __sta_exts, _IndexType __nom=__gnu_cxx::__int_traits< _IndexType >::__max)
 
template<typename _IndexType , size_t _Extent, typename _Slice >
consteval size_t std::__mdspan::__static_slice_extent ()
 
template<typename _Mapping , typename... _Slices>
constexpr auto std::__mdspan::__submapping (const _Mapping &__mapping, _Slices... __slices)
 
template<typename _Mapping >
constexpr auto std::__mdspan::__submdspan_mapping_impl (const _Mapping &__mapping)
 
template<typename _Mapping , typename... _Slices>
constexpr size_t std::__mdspan::__suboffset (const _Mapping &__mapping, const _Slices &... __slices)
 
template<typename _IndexType , typename... _Slices>
consteval auto std::__mdspan::__subrank ()
 
template<typename _SubExts , typename _Mapping , typename... _Slices>
constexpr auto std::__mdspan::__substrides (const _Mapping &__mapping, const _Slices &... __slices)
 
template<typename _SubExts , typename _Mapping , typename... _Slices>
constexpr auto std::__mdspan::__substrides_generic (const _Mapping &__mapping, const _Slices &... __slices)
 
template<typename _SubExts , typename _Mapping , typename... _Slices>
constexpr auto std::__mdspan::__substrides_standardized (const _Mapping &__mapping, const _Slices &... __slices)
 
constexpr std::__mdspan::if (__sub_rank==0) return submdspan_mapping_result
 
else constexpr std::__mdspan::if (_Trait::_S_is_unpadded_submdspan(_SliceView(__slice_kinds), __sub_rank)) return submdspan_mapping_result
 
else constexpr std::__mdspan::if (constexpr auto __u=__padded_block_begin< __side >(_SliceView(__slice_kinds), __sub_rank);__u !=dynamic_extent)
 
template<typename _ElementType , typename _MappingType >
 std::mdspan (_ElementType *, const _MappingType &) -> mdspan< _ElementType, typename _MappingType::extents_type, typename _MappingType::layout_type >
 
template<typename _ElementType , typename _OIndexType , size_t _Nm>
 std::mdspan (_ElementType *, const array< _OIndexType, _Nm > &) -> mdspan< _ElementType, dextents< size_t, _Nm >>
 
template<typename _ElementType , typename _IndexType , size_t... _ExtentsPack>
 std::mdspan (_ElementType *, const extents< _IndexType, _ExtentsPack... > &) -> mdspan< _ElementType, extents< _IndexType, _ExtentsPack... >>
 
template<typename _ElementType , typename _OIndexType , size_t _Nm>
 std::mdspan (_ElementType *, span< _OIndexType, _Nm >) -> mdspan< _ElementType, dextents< size_t, _Nm >>
 
template<typename _Pointer >
requires is_pointer_v< remove_reference_t< _Pointer > > std::mdspan (_Pointer &&) -> mdspan< remove_pointer_t< remove_reference_t< _Pointer >>, extents< size_t >>
 
template<typename _MappingType , typename _AccessorType >
 std::mdspan (typename _AccessorType::data_handle_type, const _MappingType &, const _AccessorType &) -> mdspan< typename _AccessorType::element_type, typename _MappingType::extents_type, typename _MappingType::layout_type, _AccessorType >
 
template<array _Extents>
 std::__mdspan::requires (__all_dynamic< _Extents >()) class _StaticExtents< _Extents >
 
template<typename _ElementType , typename... _Integrals>
 std::requires (is_convertible_v< _Integrals, size_t > &&...) &&(sizeof...(_Integrals) > 0) explicit mdspan(_ElementType *
 
template<typename... _Integrals>
 std::requires (is_convertible_v< _Integrals, size_t > &&...) explicit extents(_Integrals...) -> extents< size_t, __detail::__maybe_static_ext< _Integrals >... >
 
template<typename _IndexType , size_t... _Extents, typename... _RawSlices>
 std::requires (sizeof...(_Extents)==sizeof...(_RawSlices)) const expr auto canonical_slices(const extents< _IndexType
 
template<typename _ElementType , typename _Extents , typename _Layout , typename _Accessor , typename... _RawSlices>
 std::requires (sizeof...(_RawSlices)==_Extents::rank() &&__mdspan::__sliceable_mapping< typename _Layout::template mapping< _Extents >, __mdspan::__full_extent_t< _RawSlices >... >) const expr auto submdspan(const mdspan< _ElementType
 
template<typename _IndexType , size_t... _Extents, typename... _RawSlices>
 std::requires (sizeof...(_RawSlices)==sizeof...(_Extents)) const expr auto subextents(const extents< _IndexType
 
template<typename _Mapping , typename... _Slices>
 std::__mdspan::requires (sizeof...(_Slices) > 0) const expr auto __submdspan_mapping_impl(const _Mapping &__mapping
 
template<typename _IndexType , size_t... _Extents, typename... _Slices>
 std::__mdspan::requires (sizeof...(_Slices)==sizeof...(_Extents)) const expr auto __subextents(const extents< _IndexType
 
void std::__mdspan::submdspan_mapping ()=delete
 

Variables

template<typename _Slice , typename _IndexType >
concept std::__mdspan::__acceptable_slice_type
 
_Extents & std::__mdspan::__exts
 
_Extents & std::__exts
 
template<array _Extents>
constexpr auto std::__mdspan::__fwd_partial_prods
 
auto std::__mdspan::__impl
 
template<typename _Tp >
constexpr bool std::__mdspan::__is_constant_wrapper
 
template<auto _Xv, typename _Tp >
constexpr bool std::__mdspan::__is_constant_wrapper< constant_wrapper< _Xv, _Tp > >
 
template<typename _Tp >
constexpr bool std::__mdspan::__is_extent_slice
 
template<typename _OffsetType , typename _ExtentType , typename _StrideType >
constexpr bool std::__mdspan::__is_extent_slice< extent_slice< _OffsetType, _ExtentType, _StrideType > >
 
template<typename _Tp >
constexpr bool std::__mdspan::__is_extents
 
template<typename _IndexType , size_t... _Extents>
constexpr bool std::__mdspan::__is_extents< extents< _IndexType, _Extents... > >
 
template<typename _Mapping >
constexpr bool std::__mdspan::__is_left_padded_mapping
 
template<typename _Mapping >
constexpr bool std::__mdspan::__is_padded_mapping
 
template<typename _Tp >
constexpr bool std::__mdspan::__is_range_slice
 
template<typename _FirstType , typename _LastType , typename _StrideType >
constexpr bool std::__mdspan::__is_range_slice< range_slice< _FirstType, _LastType, _StrideType > >
 
template<typename _Mapping >
constexpr bool std::__mdspan::__is_right_padded_mapping
 
template<typename _Tp >
constexpr bool std::__is_submdspan_mapping_result
 
template<typename _Mapping >
constexpr bool std::__is_submdspan_mapping_result< submdspan_mapping_result< _Mapping > >
 
template<typename _Slice >
concept std::__mdspan::__is_unit_stride_slice
 
template<typename _Mp >
concept std::__mdspan::__mapping_alike
 
template<typename _Layout , typename _Mapping >
concept std::__mdspan::__mapping_of
 
_Accessor & std::__md
 
auto std::__mdspan::__offset
 
template<template< size_t > typename _Layout, typename _Mapping >
concept std::__mdspan::__padded_mapping_of
 
constexpr auto std::__mdspan::__rank
 
_Extents _RawSlices std::__raw_slices
 
template<typename _Extents , typename _IndexType >
concept std::__mdspan::__representable_size
 
template<array _Extents>
constexpr auto std::__mdspan::__rev_partial_prods
 
constexpr auto std::__mdspan::__side
 
constexpr auto std::__mdspan::__slice_kinds
 
template<typename _Mapping , typename... _Slices>
concept std::__mdspan::__sliceable_mapping
 
_Extents _Slices std::__mdspan::__slices
 
template<typename _Mapping >
concept std::__mdspan::__standardized_mapping
 
auto std::__mdspan::__sub_exts
 
constexpr auto std::__mdspan::__sub_rank
 
template<typename _Mapping >
concept std::__submdspan_mapping_result
 
template<typename _OIndexType , typename _SIndexType >
concept std::__mdspan::__valid_index_type
 
template<typename _Extents , size_t _PaddedStride, typename _LayoutTraits , size_t _Rank = _Extents::rank()>
concept std::__mdspan::__valid_padded_size
 
template<size_t _Extent, typename _IndexType >
concept std::__mdspan::__valid_static_extent
 
template<typename _Extents , size_t _PaddingValue, typename _LayoutTraits , size_t _Rank = _Extents::rank()>
concept std::__mdspan::__valid_static_stride
 
 std::_Extents
 
 std::_Layout
 
 std::auto [__mapping, __offset]
 
 std::__mdspan::else
 
requires is_array_v< _CArray > std::extents< size_t, extent_v< _CArray, 0 > >
 
constexpr full_extent_t std::full_extent
 
template<typename _CArray >
requires is_array_v< _CArray > && std::rank_v< _CArray >
 
return std::__mdspan::submdspan_mapping_result
 

Detailed Description

This is a Standard C++ Library header.

Definition in file mdspan.