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.

4469. Names of parameters of addressable function shall remain unspecified

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.

  1. 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 p of type meta::info that represents a reflection of a parameter of F, it is unspecified if has_identifier(p) returns true or false, and if meta::has_identifier(p) is true, then the NTMBS produced by meta::identifier_of(p) and meta::u8identifier_of(p) is unspecified.