Skip to content

Commit ba10a8a

Browse files
committed
Luc Grosheintz provides P/R wording improvement
1 parent 2f0bf64 commit ba10a8a

File tree

1 file changed

+245
-0
lines changed

1 file changed

+245
-0
lines changed

xml/issue4272.xml

Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,211 @@ specialization of `layout_stride`.
4545
Set priority to 2 after reflector poll.
4646
</p>
4747

48+
<superseded>
49+
<p>
50+
This wording is relative to <paper num="N5008"/>.
51+
</p>
52+
53+
<blockquote class="note">
54+
<p>
55+
[<i>Drafting note</i>: As drive-by fixes the edits for <tt>layout_left_padded&lt;&gt;::mapping</tt> and
56+
<tt>layout_right_padded&lt;&gt;::mapping</tt> also correct an editorial asymmetry between class
57+
header synopsis declaration form and prototype specification form of the corresponding
58+
constructors and adjust to the correct formatting of the exposition-only data member <tt><i>rank_</i></tt>.]
59+
</p>
60+
</blockquote>
61+
62+
<ol>
63+
<li><p>Modify <sref ref="[mdspan.layout.left.overview]"/> as indicated:</p>
64+
65+
<blockquote>
66+
<pre>
67+
namespace std {
68+
template&lt;class Extents&gt;
69+
class layout_left::mapping {
70+
[&hellip;]
71+
<i>// <sref ref="[mdspan.layout.left.cons]"/>, constructors</i>
72+
[&hellip;]
73+
template&lt;class OtherExtents&gt;
74+
constexpr explicit(<del>extents_type::rank() &gt; 0</del><ins><i>see below</i></ins>)
75+
mapping(const layout_stride::mapping&lt;OtherExtents&gt;&amp;);
76+
77+
constexpr mapping&amp; operator=(const mapping&amp;) noexcept = default;
78+
[&hellip;]
79+
};
80+
}
81+
</pre>
82+
</blockquote>
83+
</li>
84+
85+
<li><p>Modify <sref ref="[mdspan.layout.left.cons]"/> as indicated:</p>
86+
87+
<blockquote>
88+
<pre>
89+
template&lt;class OtherExtents&gt;
90+
constexpr explicit(<del>extents_type::rank() &gt; 0</del><ins><i>see below</i></ins>)
91+
mapping(const layout_stride::mapping&lt;OtherExtents&gt;&amp; other);
92+
</pre>
93+
<blockquote>
94+
<p>
95+
-13- <i>Constraints</i>: [&hellip;]
96+
<p/>
97+
-14- <i>Preconditions</i>: [&hellip;]
98+
<p/>
99+
-15- <i>Effects</i>: [&hellip;]
100+
<p/>
101+
<ins>-?- <i>Remarks</i>: The expression inside `explicit` is equivalent to:</ins>
102+
</p>
103+
<blockquote><pre>
104+
<ins>!(extents_type::rank() == 0 &amp;&amp; is_convertible_v&lt;OtherExtents, extents_type&gt;)</ins>
105+
</pre></blockquote>
106+
</blockquote>
107+
</blockquote>
108+
</li>
109+
110+
<li><p>Modify <sref ref="[mdspan.layout.right.overview]"/> as indicated:</p>
111+
112+
<blockquote>
113+
<pre>
114+
namespace std {
115+
template&lt;class Extents&gt;
116+
class layout_right::mapping {
117+
[&hellip;]
118+
<i>// <sref ref="[mdspan.layout.right.cons]"/>, constructors</i>
119+
[&hellip;]
120+
template&lt;class OtherExtents&gt;
121+
constexpr explicit(<del>extents_type::rank() &gt; 0</del><ins><i>see below</i></ins>)
122+
mapping(const layout_stride::mapping&lt;OtherExtents&gt;&amp;);
123+
124+
constexpr mapping&amp; operator=(const mapping&amp;) noexcept = default;
125+
[&hellip;]
126+
};
127+
}
128+
</pre>
129+
</blockquote>
130+
</li>
131+
132+
<li><p>Modify <sref ref="[mdspan.layout.right.cons]"/> as indicated:</p>
133+
134+
<blockquote>
135+
<pre>
136+
template&lt;class OtherExtents&gt;
137+
constexpr explicit(<del>extents_type::rank() &gt; 0</del><ins><i>see below</i></ins>)
138+
mapping(const layout_stride::mapping&lt;OtherExtents&gt;&amp; other);
139+
</pre>
140+
<blockquote>
141+
<p>
142+
-13- <i>Constraints</i>: [&hellip;]
143+
<p/>
144+
-14- <i>Preconditions</i>: [&hellip;]
145+
<p/>
146+
-15- <i>Effects</i>: [&hellip;]
147+
<p/>
148+
<ins>-?- <i>Remarks</i>: The expression inside `explicit` is equivalent to:</ins>
149+
</p>
150+
<blockquote><pre>
151+
<ins>!(extents_type::rank() == 0 &amp;&amp; is_convertible_v&lt;OtherExtents, extents_type&gt;)</ins>
152+
</pre></blockquote>
153+
</blockquote>
154+
</blockquote>
155+
</li>
156+
157+
<li><p>Modify <sref ref="[mdspan.layout.leftpad.overview]"/> as indicated:</p>
158+
159+
<blockquote>
160+
<pre>
161+
namespace std {
162+
template&lt;size_t PaddingValue&gt;
163+
template&lt;class Extents&gt;
164+
class layout_left_padded&lt;PaddingValue&gt;::mapping {
165+
[&hellip;]
166+
<i>// <sref ref="[mdspan.layout.leftpad.cons]"/>, constructors</i>
167+
[&hellip;]
168+
template&lt;class OtherExtents&gt;
169+
constexpr explicit(<del>extents_type::rank() &gt; 0</del><ins><i>see below</i></ins>)
170+
mapping(const layout_stride::mapping&lt;OtherExtents&gt;&amp;);
171+
[&hellip;]
172+
};
173+
}
174+
</pre>
175+
</blockquote>
176+
</li>
177+
178+
<li><p>Modify <sref ref="[mdspan.layout.leftpad.cons]"/> as indicated:</p>
179+
180+
<blockquote>
181+
<pre>
182+
template&lt;class OtherExtents&gt;
183+
constexpr explicit(<del>rank_ &gt; 0</del><ins><i>see below</i></ins>)
184+
mapping(const layout_stride::mapping&lt;OtherExtents&gt;&amp; other);
185+
</pre>
186+
<blockquote>
187+
<p>
188+
-10- <i>Constraints</i>: [&hellip;]
189+
<p/>
190+
-11- <i>Preconditions</i>: [&hellip;]
191+
<p/>
192+
-12- <i>Effects</i>: [&hellip;]
193+
<p/>
194+
<ins>-?- <i>Remarks</i>: The expression inside `explicit` is equivalent to:</ins>
195+
</p>
196+
<blockquote><pre>
197+
<ins>!(<i>rank_</i> == 0 &amp;&amp; is_convertible_v&lt;OtherExtents, extents_type&gt;)</ins>
198+
</pre></blockquote>
199+
</blockquote>
200+
</blockquote>
201+
</li>
202+
203+
<li><p>Modify <sref ref="[mdspan.layout.rightpad.overview]"/> as indicated:</p>
204+
205+
<blockquote>
206+
<pre>
207+
namespace std {
208+
template&lt;size_t PaddingValue&gt;
209+
template&lt;class Extents&gt;
210+
class layout_right_padded&lt;PaddingValue&gt;::mapping {
211+
[&hellip;]
212+
<i>// <sref ref="[mdspan.layout.rightpad.cons]"/>, constructors</i>
213+
[&hellip;]
214+
template&lt;class OtherExtents&gt;
215+
constexpr explicit(<del>rank_ &gt; 0</del><ins><i>see below</i></ins>)
216+
mapping(const layout_stride::mapping&lt;OtherExtents&gt;&amp;);
217+
[&hellip;]
218+
};
219+
}
220+
</pre>
221+
</blockquote>
222+
</li>
223+
224+
<li><p>Modify <sref ref="[mdspan.layout.rightpad.cons]"/> as indicated:</p>
225+
226+
<blockquote>
227+
<pre>
228+
template&lt;class OtherExtents&gt;
229+
constexpr explicit(<del>rank_ &gt; 0</del><ins><i>see below</i></ins>)
230+
mapping(const layout_stride::mapping&lt;OtherExtents&gt;&amp; other);
231+
</pre>
232+
<blockquote>
233+
<p>
234+
-10- <i>Constraints</i>: [&hellip;]
235+
<p/>
236+
-11- <i>Preconditions</i>: [&hellip;]
237+
<p/>
238+
-12- <i>Effects</i>: [&hellip;]
239+
<p/>
240+
<ins>-?- <i>Remarks</i>: The expression inside `explicit` is equivalent to:</ins>
241+
</p>
242+
<blockquote><pre>
243+
<ins>!(<i>rank_</i> == 0 &amp;&amp; is_convertible_v&lt;OtherExtents, extents_type&gt;)</ins>
244+
</pre></blockquote>
245+
</blockquote>
246+
</blockquote>
247+
</li>
248+
249+
</ol>
250+
</superseded>
251+
252+
<note>2025-06-20, Luc Grosheintz provides further wording improvements</note>
48253
</discussion>
49254

50255
<resolution>
@@ -199,6 +404,26 @@ template&lt;class OtherExtents&gt;
199404
<ins>!(<i>rank_</i> == 0 &amp;&amp; is_convertible_v&lt;OtherExtents, extents_type&gt;)</ins>
200405
</pre></blockquote>
201406
</blockquote>
407+
<pre>
408+
template&lt;class LayoutLeftPaddedMapping&gt;
409+
constexpr explicit(<i>see below</i>)
410+
mapping(const LayoutLeftPaddedMapping&amp; other);
411+
</pre>
412+
<blockquote>
413+
<p>
414+
-13- <i>Constraints</i>: [&hellip;]
415+
<p/>
416+
[&hellip;]
417+
<p/>
418+
-16- <i>Remarks</i>: The expression inside `explicit` is equivalent to:
419+
</p>
420+
<blockquote><pre>
421+
<ins>!is_convertible_v&lt;typename LayoutLeftPaddedMapping::extents_type, extents_type&gt; &amp;&amp;</ins>
422+
rank_&gt; 1 &amp;&amp;
423+
(padding_value != dynamic_extent ||
424+
LayoutLeftPaddedMapping::padding_value == dynamic_extent)
425+
</pre></blockquote>
426+
</blockquote>
202427
</blockquote>
203428
</li>
204429

@@ -245,6 +470,26 @@ template&lt;class OtherExtents&gt;
245470
<ins>!(<i>rank_</i> == 0 &amp;&amp; is_convertible_v&lt;OtherExtents, extents_type&gt;)</ins>
246471
</pre></blockquote>
247472
</blockquote>
473+
<pre>
474+
template&lt;class LayoutRightPaddedMapping&gt;
475+
constexpr explicit(<i>see below</i>)
476+
mapping(const LayoutRightPaddedMapping&amp; other);
477+
</pre>
478+
<blockquote>
479+
<p>
480+
-13- <i>Constraints</i>: [&hellip;]
481+
<p/>
482+
[&hellip;]
483+
<p/>
484+
-17- <i>Remarks</i>: The expression inside `explicit` is equivalent to:
485+
</p>
486+
<blockquote><pre>
487+
<ins>!is_convertible_v&lt;typename LayoutRightPaddedMapping::extents_type, extents_type&gt; &amp;&amp;</ins>
488+
<i>rank_</i> &gt; 1 &amp;&amp;
489+
(padding_value != dynamic_extent ||
490+
LayoutRightPaddedMapping::padding_value == dynamic_extent)
491+
</pre></blockquote>
492+
</blockquote>
248493
</blockquote>
249494
</li>
250495

0 commit comments

Comments
 (0)