Created on 2026-05-31.00:00:00 last changed 6 days ago
Proposed resolution:
This wording is relative to N5046.
Modify [meta.reflection.scope] as indicated:
consteval info current_function();-6- An invocation of `current_function` that appears at a program point P is value-dependent ([temp.dep.constexpr]) if eval-point(P) is enclosed by a scope corresponding to a templated entity.
-7- Let S be CURRENT-SCOPE(P), where P is the point at which the invocation of `current_function` lexically appears. -8- Returns: S if S represents a function. Otherwise, a reflection representing the nearest enclosing function of the entity represented by S. -9- Throws: `meta::exception` unlessS represents a functionan enclosing function is found.
[ 2026-06-16; Ville Voutilainen provides improved wording ]
[ 2026-06-16, Barry Revzin provides wording ]
This wording is relative to N5046.
Modify [meta.reflection.scope] as indicated:
consteval info current_function();-6- An invocation of `current_function` that appears at a program point P is value-dependent ([temp.dep.constexpr]) if eval-point(P) is enclosed by a scope corresponding to a templated entity.
-7- Let S be CURRENT-SCOPE(P), where P is the point at which the invocation of `current_function` lexically appears. -8- Returns: S if S represents a function. Otherwise, parent_of(S). -9- Throws: `meta::exception` unless S represents a function.
`std::meta::current_function` is specified to throw if CURRENT-SCOPE(P) does not represent a function. It is implied that `current_function` throws if the call is directly contained in a local class, in which case it's actually in a function body, but indirectly.
This might be an oversight, as neither P3795 (which introduced this function) nor https://wg21.link/P3795/github has any discussion concerning local classes. Example:
#include <meta>
template<auto V> struct A { static constexpr auto value = V; };
consteval std::meta::info test() {
struct Local { using T = A<std::meta::current_function()>; }; // valid or not?
return Local::T::value;
}
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2026-06-20 12:23:29 | admin | set | messages: + msg16488 |
| 2026-06-16 16:43:12 | admin | set | messages: + msg16484 |
| 2026-06-16 16:43:12 | admin | set | messages: + msg16483 |
| 2026-05-31 00:00:00 | admin | create | |