diff --git a/xml/issue4316.xml b/xml/issue4316.xml index 2bdc9774c2..a08766fb5b 100644 --- a/xml/issue4316.xml +++ b/xml/issue4316.xml @@ -41,9 +41,91 @@ While the intent seems clear, this should be rephrased to be more technically co
Set priority to 1 after reflector poll.
+ +
+This wording is relative to
Modify
++++ ++-1- For value `x` of type `info`, and prvalue constant expression `X` that computes the +reflection held by `x`, let TARG-SPLICE(x) be: +
+
+ +- -1.1- template [: X :] if `is_template(x)` is `true`, otherwise
+- -1.2- typename [: X :] if `is_type(x)` is `true`, otherwise
+- -1.3- ([: X :])
++template<reflection_range R = initializer_list<info>> + consteval bool can_substitute(info templ, R&& arguments); ++++ ++-1-
+Let `Z` be the template represented by `templ` and let `Args...` be a +sequence of prvalue constant expressions that compute the reflections held by +the elements of `arguments`, in order.+Let n be the number of elements in `arguments`, and ei +be the ith element of `arguments`. ++-2- Returns: `true` if Z<
+[:Args:]...TARG-SPLICE(e0), +..., TARG-SPLICE(en-1)> is a valid template-id +() that does not name a function whose type contains an undeduced placeholder type. +Otherwise, `false`. + +-3- Throws: `meta::exception` unless `templ` represents a template, and every reflection +in `arguments` represents a construct usable as a template argument (
+). + +-4- [Note: If forming Z<
+[:Args:]...TARG-SPLICE(e0), +..., TARG-SPLICE(en-1)> leads to a failure outside of the immediate +context, the program is ill-formed. — end note] ++template<reflection_range R = initializer_list<info>> + consteval info substitute(info templ, R&& arguments); ++++ ++-5-
+Let `Z` be the template represented by `templ` and let `Args...` be a +sequence of prvalue constant expressions that compute the reflections held by +the elements of `arguments`, in order.+Let n be the number of elements in `arguments`, and ei +be the ith element of `arguments`. ++-6- Returns: ^^Z<
+[:Args:]...TARG-SPLICE(e0) +..., TARG-SPLICE(en-1)>.+-7- Throws: `meta::exception` unless `can_substitute(templ, arguments)` is `true`. +
++-8- [Note: If forming Z<
+[:Args:]...TARG-SPLICE(e0), +..., TARG-SPLICE(en-1)> leads to a failure outside of the immediate +context, the program is ill-formed. — end note] +