Title
Mangling reflections of annotations is infeasible
Status
ready
Section
6.7 [basic.link]
Submitter
Dan Katz

Created on 2025-11-06.00:00:00 last changed 1 month ago

Messages

Date: 2025-11-07.22:16:49

Proposed resolution (approved by CWG 2025-11-07):

Change in 6.7 [basic.link] bullet 16.4 as follows:

  • ...
  • it is a reflection value (6.9.2 [basic.fundamental]) that represents
    • an entity, value, or object that is TU-local,
    • an annotation (9.13.12 [dcl.attr.annotation]),
    • a direct base class relationship (D, B) (11.7.1 [class.derived.general]) for which either D or B is TU-local, or
    • a data member description (T, N, A, W, NUA) (11.4.1 [class.mem.general]) for which T is TU-local.
Date: 2025-11-06.00:00:00

(From submission #796.)

Consider:

  [[=1]] void f();
  constexpr auto R = annotations_of(^^f)[0];

  template <std::meta::info> struct TCls {};

R could be exported across module boundaries, which would require TCls<R> to be mangled.

History
Date User Action Args
2025-11-07 22:16:49adminsetstatus: open -> ready
2025-11-07 16:12:39adminsetmessages: + msg8374
2025-11-06 00:00:00admincreate