This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 119a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-12-20
(From submission #808.)
The follow example ought to be value-dependent, but is currently not specified to be so:
template <typename T>
consteval void f() {
T v;
std::meta::info R = std::meta::type_of(^^v); // not currently value-dependent
}
Proposed resolution (approved by CWG 2025-11-21):
Change in 13.8.3.4 [temp.dep.constexpr] paragraph 7 as follows:
A reflect-expression is value-dependent if
- it is of the form ^^reflection-name and either lookup for the reflection-name finds a declaration that inhabits a scope corresponding to a templated entity or the reflection-name is
isa dependent qualified name,isa dependent namespace-name, oristhe name of a template parameter,or- names a dependent member of the current instantiation (13.8.3.2 [temp.dep.type]),
- it is of the form ^^type-id and the type-id denotes a dependent type, or
- it is of the form ^^id-expression and the id-expression is value-dependent.
(Drafting note: Reflection on block-scope externs is made ill-formed by issue 3065.)