Created on 2025-08-15.00:00:00 last changed 2 weeks ago
`can_substitute` and `substitute` are currently specified in terms of splices in a template argument list:
[meta.reflection.substitute] p3:Returns: `true` if Z<[:Args:]...> is a valid template-id ([temp.names]) that does not name a function whose type contains an undeduced placeholder type. Otherwise, `false`.
[meta.reflection.substitute] p7:
Returns: ^^Z<[:Args:]...>.
This wording was introduced in P2996R11. However, merging in changes from P3687 "Final Adjustments to C++26 Reflection" in P2996R13 changed the rules for splices in this context. This makes `can_substitute` and `substitute` as specified currently ill-formed. We cannot use the given syntax to splice an arbitrary choice of values, types and templates anymore.
While the intent seems clear, this should be rephrased to be more technically correct.History | |||
---|---|---|---|
Date | User | Action | Args |
2025-08-15 00:00:00 | admin | create |