44<issue num =" 4432" status =" New" >
55<title >Clarify element initialization for <tt >meta::reflect_constant_array</tt ></title >
66<section >
7- <sref ref =" [meta.reflection.array ]" />
7+ <sref ref =" [meta.define.static ]" />
88</section >
99<submitter >Tomasz Kamiński</submitter >
1010<date >27 Oct 2025</date >
@@ -20,16 +20,15 @@ It is not clear what <i>e<sub>i</sub></i> is when proxy references are involved.
2020<sref ref =" [meta.reflection.array]" /> Clarify copy-initialization vs. direct-initialization use
2121The initialization of <tt >P</tt > uses copy-initialization but the Mandates clause uses direct-initialization.
2222</p >
23- </discussion >
2423
25- <resolution >
24+ <superseded >
2625<p >
2726This wording is relative to <paper num =" N5014" />.
2827</p >
2928
3029<ol >
3130
32- <li ><p >Modify <sref ref =" [meta.reflection.array ]" /> as indicated:</p >
31+ <li ><p >Modify <sref ref =" [meta.define.static ]" /> as indicated:</p >
3332
3433<pre >
3534template< ranges::input_range R>
@@ -52,6 +51,47 @@ where <i><del>e<sub>i</sub></del><ins>it<sub>i</sub></ins></i> is <ins>an iterat
5251</li >
5352</ol >
5453
54+ </superseded >
55+ </discussion >
56+
57+ <resolution >
58+ <p >
59+ This wording is relative to <paper num =" N5014" />.
60+ </p >
61+
62+ <ol >
63+
64+ <li ><p >Modify <sref ref =" [meta.define.static]" /> as indicated:</p >
65+
66+ <pre >
67+ template< ranges::input_range R>
68+ consteval info reflect_constant_array(R&& r);
69+ </pre >
70+ <blockquote >
71+ <p >-8- Let <tt >T</tt > be <tt >ranges::range_value_t< R> </tt >
72+ <ins >and <i >e<sub >i</sub ></i > be <tt >static_cast< T> (*<i >it<sub >i</sub ></i >)</tt >,
73+ where <i >it<sub >i</sub ></i > is an iterator to the <i >i<sup >th</sup ></i > element of `r`</ins >.
74+ </p >
75+ <p >-9- <i >Mandates</i >:
76+ <tt >T</tt > is a structural type (<sref ref =" [temp.param]" />),
77+ <tt >is_constructible_v< T, ranges::range_reference_t< R>> </tt > is <tt >true</tt >, and
78+ <del ><tt >is_copy_constructible_v< T> </tt > is <tt >true</tt ></del >
79+ <ins ><tt >T</tt > satisfies <tt >copy_constructible</tt ></ins >.</p >
80+ <p >-10- Let <tt >V</tt > be the pack of values of type info of the same size as <tt >r</tt >,
81+ where the <i >i<sup >th</sup ></i > element is <tt >reflect_constant(<i >e<sub >i</sub ></i >)</tt ><del >,
82+ where <i >e<sub >i</sub ></i > is an iterator to the <i >i<sup >th</sup ></i > element of <tt >r</tt ></del >.
83+ </p >
84+ <p >[… ]</p >
85+ <p >-13- Throws: <ins >Any exception thrown by evaluation of <i >e<sub >i</sub ></i >, or</ins >
86+ `meta::exception` <del >unless</del ><ins >if evaluation of</ins > <tt >reflect_constant(<del >e</del ><ins ><i >e<sub >i</sub ></i ></ins >)</tt >
87+ <ins >would exit via an exception for any iterator <i >it<sub >i</sub ></i > for any element of `r`</ins >
88+ <del >is a constant subexpression for every element `e` of `r`</del >.</p >
89+ </blockquote >
90+ </li >
91+ </ol >
92+
5593</resolution >
5694
95+
96+
5797</issue >
0 commit comments