24
Containers library
[containers]
24.7
Views
[views]
24.7.3
Multidimensional access
[views.multidim]
24.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.
layout]
, layout mapping
struct
layout_left;
struct
layout_right;
struct
layout_stride;
//
[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.
submdspan]
,
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.
submdspan.
submdspan]
,
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
>
concept
integral-constant-like
=
//
exposition only
is_integral_v
<
decltype
(
T
::
value
)
>
&
&
!
is_same_v
<
bool
, remove_const_t
<
decltype
(
T
::
value
)
>
>
&
&
convertible_
to
<
T,
decltype
(
T
::
value
)
>
&
&
equality_
comparable_
with
<
T,
decltype
(
T
::
value
)
>
&
&
bool_constant
<
T
(
)
=
=
T
::
value
>
::
value
&
&
bool_constant
<
static_cast
<
decltype
(
T
::
value
)
>
(
T
(
)
)
=
=
T
::
value
>
::
value;
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
>
;
}