This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.
Section: 16.4.5.2.1 [namespace.std] Status: New Submitter: Tomasz KamiĆski Opened: 2025-11-14 Last modified: 2025-11-14
Priority: Not Prioritized
View other active issues in [namespace.std].
View all other issues in [namespace.std].
View all issues with New status.
Discussion:
The wording in 16.4.5.2.1 [namespace.std] p7 guarantees that reflection of the addressable function can be reliably produced. With the addition of the function parameter name, it is possible to access the parameter name of such functions:
constexpr auto p = parameters_of(^^std::endl)[0]; static_assert( identifier_of(p) == "os" ); // guaranteed?
We should clarify that parameter names used by standard library implementation
remain unspecified, by making result of has_identifier and identifier_of
unspecified on reflection of such parameter.
Proposed resolution:
This wording is relative to N5014.
Modify 16.4.5.2.1 [namespace.std], as indicated:
Let F denote a standard library function or function template. Unless F is designated an addressable function, it is unspecified if or how a reflection value designating the associated entity can be formed. For any value
pof typemeta::infothat represents a reflection of a parameter of F, it is unspecified ifhas_identifier(p)returnstrueorfalse, and ifmeta::has_identifier(p)istrue, then theNTMBSproduced bymeta::identifier_of(p)andmeta::u8identifier_of(p)is unspecified.