4469. Names of parameters of addressable function shall remain unspecified

Section: 16.4.5.2.1 [namespace.std] Status: Ready Submitter: Tomasz KamiƄski Opened: 2025-11-14 Last modified: 2026-01-16

Priority: 2

View other active issues in [namespace.std].

View all other issues in [namespace.std].

View all issues with Ready 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.

[2026-01-16; Reflector poll.]

Set priority to 2 after reflector poll.

[2026-01-16; LWG telecon. Move to Ready]

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.