From Jason Turner

[mdspan.extents.cons]

Diff to HTML by rtfpessoa

tmp/tmpwt7nn2n0/{from.md → to.md} RENAMED
@@ -53,12 +53,12 @@ Let `N` be `sizeof...(OtherIndexTypes)`, and let `exts_arr` be
53
 
54
  - If `N != rank_dynamic()` is `true`, `exts_arr[`r`]` equals Eᵣ for each
55
  r for which Eᵣ is a static extent, and
56
  - either
57
  - `sizeof...(exts) == 0` is `true`, or
58
- - each element of `exts` is nonnegative and is representable as a
59
- value of type `index_type`.
60
 
61
  *Ensures:* `*this == extents(exts_arr)` is `true`.
62
 
63
  ``` cpp
64
  template<class OtherIndexType, size_t N>
@@ -80,16 +80,16 @@ template<class OtherIndexType, size_t N>
80
 
81
  - If `N != rank_dynamic()` is `true`, `exts[`r`]` equals Eᵣ for each r
82
  for which Eᵣ is a static extent, and
83
  - either
84
  - `N` is zero, or
85
- - `exts[`r`]` is nonnegative and is representable as a value of type
86
  `index_type` for every rank index r.
87
 
88
  *Effects:*
89
 
90
- - If `N` equals `dynamic_rank()`, for all d in the range
91
  [0, `rank_dynamic()`), direct-non-list-initializes
92
  *`dynamic-extents`*`[`d`]` with `as_const(exts[`d`])`.
93
  - Otherwise, for all d in the range [0, `rank_dynamic()`),
94
  direct-non-list-initializes *`dynamic-extents`*`[`d`]` with
95
  `as_const(exts[`*`dynamic-index-inv`*`(`d`)])`.
@@ -99,7 +99,8 @@ template<class... Integrals>
99
  explicit extents(Integrals...) -> see below;
100
  ```
101
 
102
  *Constraints:* `(is_convertible_v<Integrals, size_t> && ...)` is `true`.
103
 
104
- *Remarks:* The deduced type is `dextents<size_t, sizeof...(Integrals)>`.
 
105
 
 
53
 
54
  - If `N != rank_dynamic()` is `true`, `exts_arr[`r`]` equals Eᵣ for each
55
  r for which Eᵣ is a static extent, and
56
  - either
57
  - `sizeof...(exts) == 0` is `true`, or
58
+ - each element of `exts` is representable as a nonnegative value of
59
+ type `index_type`.
60
 
61
  *Ensures:* `*this == extents(exts_arr)` is `true`.
62
 
63
  ``` cpp
64
  template<class OtherIndexType, size_t N>
 
80
 
81
  - If `N != rank_dynamic()` is `true`, `exts[`r`]` equals Eᵣ for each r
82
  for which Eᵣ is a static extent, and
83
  - either
84
  - `N` is zero, or
85
+ - `exts[`r`]` is representable as a nonnegative value of type
86
  `index_type` for every rank index r.
87
 
88
  *Effects:*
89
 
90
+ - If `N` equals `rank_dynamic()`, for all d in the range
91
  [0, `rank_dynamic()`), direct-non-list-initializes
92
  *`dynamic-extents`*`[`d`]` with `as_const(exts[`d`])`.
93
  - Otherwise, for all d in the range [0, `rank_dynamic()`),
94
  direct-non-list-initializes *`dynamic-extents`*`[`d`]` with
95
  `as_const(exts[`*`dynamic-index-inv`*`(`d`)])`.
 
99
  explicit extents(Integrals...) -> see below;
100
  ```
101
 
102
  *Constraints:* `(is_convertible_v<Integrals, size_t> && ...)` is `true`.
103
 
104
+ *Remarks:* The deduced type is
105
+ `extents<size_t, maybe-static-ext<Integrals>...>`.
106