std::mdspan<T,Extents,LayoutPolicy,AccessorPolicy>:: mdspan
constexpr
mdspan
(
)
;
|
(1) | (since C++23) |
template
<
class
...
OtherIndexTypes
>
constexpr explicit mdspan ( data_handle_type p, OtherIndexTypes... exts ) ; |
(2) | (since C++23) |
template
<
class
OtherIndexType,
std::
size_t
N
>
constexpr
explicit
(
N
!
=
rank_dynamic
(
)
)
|
(3) | (since C++23) |
template
<
class
OtherIndexType,
std::
size_t
N
>
constexpr
explicit
(
N
!
=
rank_dynamic
(
)
)
|
(4) | (since C++23) |
constexpr
mdspan
(
data_handle_type p,
const
extents_type
&
ext
)
;
|
(5) | (since C++23) |
constexpr
mdspan
(
data_handle_type p,
const
mapping_type
&
m
)
;
|
(6) | (since C++23) |
constexpr
mdspan
(
data_handle_type p,
const
mapping_type
&
m,
const accessor_type & a ) ; |
(7) | (since C++23) |
template
<
class
OtherElementType,
class
OtherExtents,
class
OtherLayoutPolicy,
class
OtherAccessor
>
|
(8) | (since C++23) |
constexpr
mdspan
(
const
mdspan
&
rhs
)
=
default
;
|
(9) | (since C++23) |
constexpr
mdspan
(
mdspan
&&
rhs
)
=
default
;
|
(10) | (since C++23) |
Constructs an
mdspan
, optionally using user-supplied data handle
p
, layout mapping
m
, and accessor
a
. If extents
exts
or
ext
are supplied, they are converted to
extents_type
and used to initialize the layout mapping.
ptr_
,
map_
, and
acc_
.
-
The behavior is undefined if
[
0 ,
map_. required_span_size ( ))
is not an accessible range ofptr_
andacc_
for the values ofmap_
andacc_
after the invocation of this constructor. - This overload participates in overload resolution only if
-
- rank_dynamic ( ) > 0 is true ,
- std:: is_default_constructible_v < data_handle_type > is true ,
- std:: is_default_constructible_v < mapping_type > is true , and
- std:: is_default_constructible_v < accessor_type > is true .
exts...
.
Value-initializes
acc_
,
direct-non-list-initializes
ptr_
with
std
::
move
(
p
)
and
map_
with
extents_type
(
static_cast
<
index_type
>
(
std
::
move
(
exts
)
)
...
)
.
-
The behavior is undefined if
[
0 ,
map_. required_span_size ( ))
is not an accessible range ofptr_
andacc_
for the values ofmap_
andacc_
after the invocation of this constructor. - Let N be sizeof... ( OtherIndexTypes ) . This overload participates in overload resolution only if
-
- ( std:: is_convertible_v < OtherIndexTypes, index_type > && ... ) is true ,
- ( std:: is_nothrow_constructible < index_type, OtherIndexTypes > && ... ) is true ,
- N == rank ( ) || N == rank_dynamic ( ) is true ,
- std:: is_constructible_v < mapping_type, extents_type > is true , and
- std:: is_default_constructible_v < accessor_type > is true .
acc_
,
direct-non-list-initializes
ptr_
with
std
::
move
(
p
)
and
map_
with
extents_type
(
exts
)
.
-
The behavior is undefined if
[
0 ,
map_. required_span_size ( ))
is not an accessible range ofptr_
andacc_
for the values ofmap_
andacc_
after the invocation of this constructor. - This overload participates in overload resolution only if
-
- std:: is_convertible_v < const OtherIndexTypes & , index_type > is true ,
- std:: is_nothrow_constructible < index_type, const OtherIndexTypes & > is true ,
- N == rank ( ) || N == rank_dynamic ( ) is true ,
- std:: is_constructible_v < mapping_type, extents_type > is true , and
- std:: is_default_constructible_v < accessor_type > is true .
acc_
,
direct-non-list-initializes
ptr_
with
std
::
move
(
p
)
and
map_
with
exts
.
-
The behavior is undefined if
[
0 ,
map_. required_span_size ( ))
is not an accessible range of p andacc_
for the values ofmap_
andacc_
after the invocation of this constructor. - This overload participates in overload resolution only if
-
- std:: is_constructible_v < mapping_type, const mapping_type & > is true , and
- std:: is_default_constructible_v < accessor_type > is true .
acc_
,
direct-non-list-initializes
ptr_
with
std
::
move
(
p
)
and
map_
with
m
.
-
The behavior is undefined if
[
0 ,
m. required_span_size ( ))
is not an accessible range of p andacc_
for the values ofacc_
after the invocation of this constructor. - This overload participates in overload resolution only if std:: is_default_constructible_v < accessor_type > is true .
ptr_
with
std
::
move
(
p
)
,
map_
with
m
and
acc_
with
a
.
-
The behavior is undefined if
[
0 ,
m. required_span_size ( ))
is not an accessible range of p and a after the invocation of this constructor.
ptr_
with
other.
ptr_
,
map_
with
other.
map_
and
acc_
with
other.
acc_
.
- The behavior is undefined if :
-
-
[
0 ,
map_. required_span_size ( ))
is not an accessible range ofptr_
andacc_
for the values ofmap_
andacc_
after the invocation of this constructor, or -
for each rank index
r
of extents_type , extents_type :: static_extent ( r ) == std:: dynamic_extent
|| extents_type :: static_extent ( r ) == other. extent ( r ) is false .
-
- This overload participates in overload resolution only if
-
-
std::
is_constructible_v
<
mapping_type,
const
OtherLayoutPolicy
::
template mapping < OtherExtents > & > is true , and - std:: is_constructible_v < accessor_type, const OtherAccessor & > is true .
-
std::
is_constructible_v
<
mapping_type,
const
OtherLayoutPolicy
::
- The program is ill-formed if:
-
-
std::
is_constructible_v
<
data_handle_type,
const OtherAccessor :: data_handle_type & > is false , or - std:: is_constructible_v < extents_type, OtherExtents > is false .
-
std::
is_constructible_v
<
data_handle_type,
-
The expression inside
explicit
is equivalent to:
!
std::
is_convertible_v
<
const
OtherLayoutPolicy
::
template mapping < OtherExtents > & , mapping_type >
|| ! std:: is_convertible_v < const OtherAccessor & , accessor_type >
Parameters
p | - | a handle to the underlying data |
m | - | a layout mapping |
a | - | an accessor |
ext | - |
a
std::extents
object
|
exts | - | represents a multi-dimensional extents |
other | - | another mdspan to convert from |
rhs | - | another mdspan to copy or move from |
Example
This section is incomplete
Reason: no example |
References
- C++23 standard (ISO/IEC 14882:2024):
-
- 24.7.3.6.2 Constructors [mdspan.mdspan.cons]
See also
This section is incomplete |