From Jason Turner

[mdspan.layout.stride.cons]

Diff to HTML by rtfpessoa

tmp/tmpmwh1ubdo/{from.md → to.md} RENAMED
@@ -26,11 +26,12 @@ template<class OtherIndexType>
26
  - `is_nothrow_constructible_v<index_type, const OtherIndexType&>` is
27
  `true`.
28
 
29
  *Preconditions:*
30
 
31
- - `s[`i`] > 0` is `true` for all i in the range [0, rank_).
 
32
  - *`REQUIRED-SPAN-SIZE`*`(e, s)` is representable as a value of type
33
  `index_type` [[basic.fundamental]].
34
  - If *rank\_* is greater than 0, then there exists a permutation P of
35
  the integers in the range [0, rank_), such that
36
  `s[`pᵢ`] >= s[`pᵢ₋₁`] * e.extent(p`ᵢ₋₁`)` is `true` for all i in the
@@ -58,11 +59,11 @@ template<class StridedLayoutMapping>
58
  - `StridedLayoutMapping::is_always_strided()` is `true`.
59
 
60
  *Preconditions:*
61
 
62
  - `StridedLayoutMapping` meets the layout mapping
63
- requirements [[mdspan.layout.policy.reqmts]],
64
  - `other.stride(`r`) > 0` is `true` for every rank index r of
65
  `extents()`,
66
  - `other.required_span_size()` is representable as a value of type
67
  `index_type` [[basic.fundamental]], and
68
  - *`OFFSET`*`(other) == 0` is `true`.
@@ -74,10 +75,12 @@ direct-non-list-initializes *`strides_`*`[`d`]` with
74
 
75
  Remarks: The expression inside `explicit` is equivalent to:
76
 
77
  ``` cpp
78
  !(is_convertible_v<typename StridedLayoutMapping::extents_type, extents_type> &&
79
- (is-mapping-of<layout_left, LayoutStrideMapping> ||
80
- is-mapping-of<layout_right, LayoutStrideMapping> ||
81
- is-mapping-of<layout_stride, LayoutStrideMapping>))
 
 
82
  ```
83
 
 
26
  - `is_nothrow_constructible_v<index_type, const OtherIndexType&>` is
27
  `true`.
28
 
29
  *Preconditions:*
30
 
31
+ - The result of converting `s[`i`]` to `index_type` is greater than `0`
32
+ for all i in the range [0, rank_).
33
  - *`REQUIRED-SPAN-SIZE`*`(e, s)` is representable as a value of type
34
  `index_type` [[basic.fundamental]].
35
  - If *rank\_* is greater than 0, then there exists a permutation P of
36
  the integers in the range [0, rank_), such that
37
  `s[`pᵢ`] >= s[`pᵢ₋₁`] * e.extent(p`ᵢ₋₁`)` is `true` for all i in the
 
59
  - `StridedLayoutMapping::is_always_strided()` is `true`.
60
 
61
  *Preconditions:*
62
 
63
  - `StridedLayoutMapping` meets the layout mapping
64
+ requirements [[mdspan.layout.reqmts]],
65
  - `other.stride(`r`) > 0` is `true` for every rank index r of
66
  `extents()`,
67
  - `other.required_span_size()` is representable as a value of type
68
  `index_type` [[basic.fundamental]], and
69
  - *`OFFSET`*`(other) == 0` is `true`.
 
75
 
76
  Remarks: The expression inside `explicit` is equivalent to:
77
 
78
  ``` cpp
79
  !(is_convertible_v<typename StridedLayoutMapping::extents_type, extents_type> &&
80
+ (is-mapping-of<layout_left, StridedLayoutMapping> ||
81
+ is-mapping-of<layout_right, StridedLayoutMapping> ||
82
+ is-layout-left-padded-mapping-of<StridedLayoutMapping> ||
83
+ is-layout-right-padded-mapping-of<StridedLayoutMapping> ||
84
+ is-mapping-of<layout_stride, StridedLayoutMapping>))
85
  ```
86