std::extents<IndexType,Extents...>::extents
From cppreference.com
constexpr extents() = default; |
(1) | (since C++23) |
template
<
class OtherIndexType, std::size_t... OtherExtents
>
constexpr explicit(/*see below*/) |
(2) | (since C++23) |
template
<
class... OtherIndexTypes
>
constexpr explicit extents( OtherIndexTypes... exts ) noexcept ; |
(3) | (since C++23) |
template
<
class OtherIndexType, std::size_t N >
constexpr
explicit
(N !
= rank_dynamic(
)
)
|
(4) | (since C++23) |
template
<
class OtherIndexType, std::size_t N >
constexpr
explicit
(N !
= rank_dynamic(
)
)
|
(5) | (since C++23) |
Construct an extents
. One can construct extents
from just dynamic extents, which are all the values getting stored, or from all the extents with a precondition.
1) Default constructor. Initializes all dynamic extents to zero.
2) Conversion from another
extents
object. After construction, *this == other is true.
- The behavior is undefined if
-
- other.extent (r) ! = static_extent(r) for any r for which static_extent(r)
- other.extent(r) is not representable as a value of type IndexType for any rank value r in other
- This overload participates in overload resolution only if
-
- sizeof...(OtherExtents) == rank() is true
-
(
(OtherExtents ==
std::dynamic_extent
|| Extents ==
std::dynamic_extent
||
OtherExtents == Extents) && ...) is true
- This constructor is explicit if
-
- ( (Extents ! = std::dynamic_extent && OtherExtents == std::dynamic_extent ) || ...) is true
- std::numeric_limits <IndexType> :: max ( ) < std::numeric_limits <OtherIndexType> :: max ( ) is true
3) Let N be sizeof...(exts) and exts_arr be
std::array
<IndexType, N>
{
static_cast
<IndexType>
(std::
move
(exts)
)...}
, equivalent to extents(exts_arr).
- This overload participates in overload resolution only if
-
- ( std::is_convertible_v <OtherIndexTypes, IndexType> && ...) is true
- ( std::is_nothrow_constructible_v <IndexType, OtherIndexTypes> && ...) is true
- N == rank_dynamic( ) || N == rank( ) is true
- The behavior is undefined if
-
- N != rank_dynamic() and exts_arr[r] is not equal to static_extent(r) for any r for which static_extent(r)
- an element in exts is negative or not representable as a value of type IndexType.
4,5) If N equals rank_dynamic(), for all d in
[
0
,
rank_dynamic()
)
, direct-non-list-initializes
dynamic-extents
[d] with
std::as_const
(exts[d]
)
. Otherwise, for all d in
[
0
,
rank_dynamic()
)
, direct-non-list-initializes dynamic-extents
[d] with
std::as_const(exts[
dynamic-index-inv
(d)])
.
- This overload participates in overload resolution only if
-
- std::is_convertible_v < const OtherIndexType&, IndexType> is true
- std::is_nothrow_constructible_v <IndexType, const OtherIndexType& > is true
- N == rank_dynamic( ) || N == rank( ) is true
- The behavior is undefined if
-
- N != rank_dynamic() and exts[r] is not equal to static_extent(r) for any r for which static_extent(r)
- exts[r] is negative or not representable as a value of type IndexType for any rank index r
Parameters
other | - | another extents to convert from
|
exts | - | represents the extents |
Example
This section is incomplete Reason: no example |
See also
|