@@ -43,9 +43,7 @@ Set priority to 1 after reflector poll.
4343</p >
4444
4545<note >2025-10-27; Tomasz provides wording.</note >
46- </discussion >
47-
48- <resolution >
46+ <superseded >
4947
5048<p >
5149This wording is relative to <paper num =" N5014" />.
@@ -126,6 +124,89 @@ context, the program is ill-formed. — <i>end note</i>]
126124</li >
127125</ol >
128126
127+ </superseded >
128+
129+ <note >2025-10-27; Reflector comments.</note >
130+ <p >
131+ We lost definition of `Z`. Use <tt ><i >TARG-SPLICE</i >([:Args:])...</tt >.
132+ </p >
133+
134+ <note >2025-11-03; Tomasz provides wording.</note >
135+ </discussion >
136+
137+ <resolution >
138+
139+ <p >
140+ This wording is relative to <paper num =" N5014" />.
141+ </p >
142+
143+ <ol >
144+
145+ <li ><p >Modify <sref ref =" [meta.reflection.substitute]" /> as indicated:</p >
146+
147+ <blockquote >
148+ <blockquote >
149+ <p >
150+ <ins >-1- For value `x` of type `info`, and prvalue constant expression `X` that computes the
151+ reflection held by `x`, let <tt ><i >TARG-SPLICE</i >(x)</tt > be:</ins >
152+ <ul >
153+ <li ><ins >-1.1- <tt >template [: X :]</tt > if `is_template(x)` is `true`, otherwise</ins ></li >
154+ <li ><ins >-1.2- <tt >typename [: X :]</tt > if `is_type(x)` is `true`, otherwise</ins ></li >
155+ <li ><ins >-1.3- <tt >([: X :])</tt ></ins ></li >
156+ </ul >
157+ </p >
158+ </blockquote >
159+
160+ <pre >
161+ template< reflection_range R = initializer_list< info>>
162+ consteval bool can_substitute(info templ, R&& arguments);
163+ </pre >
164+ <blockquote >
165+ <p >
166+ -1- Let `Z` be the template represented by `templ` and let `Args...` be a
167+ sequence of prvalue constant expressions that compute the reflections held by
168+ the elements of `arguments`, in order.
169+ </p >
170+ <p >
171+ -2- <i >Returns</i >: `true` if <tt >Z< <ins ><i >TARG-SPLICE</i >(</ins >[:Args:]<ins >)</ins >...> </tt > is a valid <i >template-id</i >
172+ (<sref ref =" [temp.names]" />) that does not name a function whose type contains an undeduced placeholder type.
173+ Otherwise, `false`.
174+ </p >
175+ <p >
176+ -3- <i >Throws</i >: `meta::exception` unless `templ` represents a template, and every reflection
177+ in `arguments` represents a construct usable as a template argument (<sref ref =" [temp.arg]" />).
178+ </p >
179+ <p >
180+ -4- [<i >Note</i >: If forming <tt >Z< <ins ><i >TARG-SPLICE</i >(</ins >[:Args:]<ins >)</ins >...> </tt >
181+ leads to a failure outside of the immediate context, the program is ill-formed. — <i >end note</i >]
182+ </p >
183+ </blockquote >
184+
185+ <pre >
186+ template< reflection_range R = initializer_list< info>>
187+ consteval info substitute(info templ, R&& arguments);
188+ </pre >
189+ <blockquote >
190+ <p >
191+ -5- Let `Z` be the template represented by `templ` and let `Args...` be a
192+ sequence of prvalue constant expressions that compute the reflections held by
193+ the elements of `arguments`, in order.
194+ </p >
195+ <p >
196+ -6- <i >Returns</i >: <tt >Z< <ins ><i >TARG-SPLICE</i >(</ins >[:Args:]<ins >)</ins >...> </tt >.</p >
197+ <p >
198+ -7- <i >Throws</i >: `meta::exception` unless `can_substitute(templ, arguments)` is `true`.
199+ </p >
200+ <p >
201+ -8- [<i >Note</i >: If forming <tt >Z< <ins ><i >TARG-SPLICE</i >(</ins >[:Args:]<ins >)</ins >...> </tt >
202+ leads to a failure outside of the immediate context, the program is ill-formed. — <i >end note</i >]
203+ </p >
204+ </blockquote >
205+
206+ </blockquote >
207+ </li >
208+ </ol >
209+
129210</resolution >
130211
131212</issue >
0 commit comments