23
Containers library
[containers]
23.7
Views
[views]
23.7.3
Multidimensional access
[views.multidim]
23.7.3.2
Header
<mdspan>
synopsis
[mdspan.syn]
🔗
// all freestanding
namespace
std
{
//
[mdspan.
extents]
, class template
extents
template
<
class
IndexType, size_t
.
.
.
Extents
>
class
extents;
//
[mdspan.
extents.
dextents]
, alias template
dextents
template
<
class
IndexType, size_t Rank
>
using
dextents
=
see below
;
//
[mdspan.
extents.
dims]
, alias template
dims
template
<
size_t Rank,
class
IndexType
=
size_t
>
using
dims
=
see below
;
//
[mdspan.
layout]
, layout mapping
struct
layout_left;
struct
layout_right;
struct
layout_stride;
template
<
size_t PaddingValue
=
dynamic_extent
>
struct
layout_left_padded;
template
<
size_t PaddingValue
=
dynamic_extent
>
struct
layout_right_padded;
//
[mdspan.
accessor.
default]
, class template
default_
accessor
template
<
class
ElementType
>
class
default_accessor;
//
[mdspan.
mdspan]
, class template
mdspan
template
<
class
ElementType,
class
Extents,
class
LayoutPolicy
=
layout_right,
class
AccessorPolicy
=
default_accessor
<
ElementType
>
>
class
mdspan;
//
[mdspan.
sub]
,
submdspan
creation
template
<
class
OffsetType,
class
LengthType,
class
StrideType
>
struct
strided_slice;
template
<
class
LayoutMapping
>
struct
submdspan_mapping_result;
struct
full_extent_t
{
explicit
full_extent_t
(
)
=
default
;
}
;
inline
constexpr
full_extent_t full_extent
{
}
;
template
<
class
IndexType,
class
.
.
.
Extents,
class
.
.
.
SliceSpecifiers
>
constexpr
auto
submdspan_extents
(
const
extents
<
IndexType, Extents
.
.
.
>
&
, SliceSpecifiers
.
.
.
)
;
//
[mdspan.
sub.
sub]
,
submdspan
function template
template
<
class
ElementType,
class
Extents,
class
LayoutPolicy,
class
AccessorPolicy,
class
.
.
.
SliceSpecifiers
>
constexpr
auto
submdspan
(
const
mdspan
<
ElementType, Extents, LayoutPolicy, AccessorPolicy
>
&
src, SliceSpecifiers
.
.
.
slices
)
-
>
see below
;
template
<
class
T,
class
IndexType
>
concept
index-pair-like
=
//
exposition only
pair-like
<
T
>
&
&
convertible_
to
<
tuple_element_t
<
0
, T
>
, IndexType
>
&
&
convertible_
to
<
tuple_element_t
<
1
, T
>
, IndexType
>
;
}