From Jason Turner

[mdspan.layout.left.cons]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmph9qk3zhs/{from.md → to.md} +35 -1
tmp/tmph9qk3zhs/{from.md → to.md} RENAMED
@@ -23,11 +23,11 @@ value of type `index_type` [[basic.fundamental]].
23
 
24
  *Effects:* Direct-non-list-initializes *extents\_* with
25
  `other.extents()`.
26
 
27
  ``` cpp
28
- template<class OtherExents>
29
  constexpr explicit(!is_convertible_v<OtherExtents, extents_type>)
30
  mapping(const layout_right::mapping<OtherExtents>& other) noexcept;
31
  ```
32
 
33
  *Constraints:*
@@ -39,10 +39,44 @@ template<class OtherExents>
39
  value of type `index_type` [[basic.fundamental]].
40
 
41
  *Effects:* Direct-non-list-initializes *extents\_* with
42
  `other.extents()`.
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  ``` cpp
45
  template<class OtherExtents>
46
  constexpr explicit(extents_type::rank() > 0)
47
  mapping(const layout_stride::mapping<OtherExtents>& other);
48
  ```
 
23
 
24
  *Effects:* Direct-non-list-initializes *extents\_* with
25
  `other.extents()`.
26
 
27
  ``` cpp
28
+ template<class OtherExtents>
29
  constexpr explicit(!is_convertible_v<OtherExtents, extents_type>)
30
  mapping(const layout_right::mapping<OtherExtents>& other) noexcept;
31
  ```
32
 
33
  *Constraints:*
 
39
  value of type `index_type` [[basic.fundamental]].
40
 
41
  *Effects:* Direct-non-list-initializes *extents\_* with
42
  `other.extents()`.
43
 
44
+ ``` cpp
45
+ template<class LayoutLeftPaddedMapping>
46
+ constexpr explicit(!is_convertible_v<typename LayoutLeftPaddedMapping::extents_type,
47
+ extents_type>)
48
+ mapping(const LayoutLeftPaddedMapping&) noexcept;
49
+ ```
50
+
51
+ *Constraints:*
52
+
53
+ - *`is-layout-left-padded-mapping-of`*`<LayoutLeftPaddedMapping>` is
54
+ `true`.
55
+ - `is_constructible_v<extents_type, typename LayoutLeftPaddedMapping::extents_type>`
56
+ is `true`.
57
+
58
+ *Mandates:* If
59
+
60
+ - `Extents::rank()` is greater than one,
61
+ - `Extents::static_extent(0)` does not equal `dynamic_extent`, and
62
+ - `LayoutLeftPaddedMapping::`*`static-padding-stride`* does not equal
63
+ `dynamic_extent`,
64
+
65
+ then `Extents::static_extent(0)` equals
66
+ `LayoutLeftPaddedMapping::`*`static-padding-stride`*.
67
+
68
+ *Preconditions:*
69
+
70
+ - If `extents_type::rank() > 1` is `true`, then `other.stride(1)` equals
71
+ `other.extents().extent(0)`.
72
+ - `other.required_span_size()` is representable as a value of type
73
+ `index_type`.
74
+
75
+ *Effects:* Direct-non-list-initializes `extents_` with
76
+ `other.extents()`.
77
+
78
  ``` cpp
79
  template<class OtherExtents>
80
  constexpr explicit(extents_type::rank() > 0)
81
  mapping(const layout_stride::mapping<OtherExtents>& other);
82
  ```