From 88788b18dea720c5d60805bacfaeeaacdecb2a37 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tomasz=20Kami=C5=84ski?=
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:
+
+
+
+
+
+
+
+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] +