On Fri, Nov 19, 2021, 17:57 Arthur O'Dwyer via Std-Proposals <std-proposals@lists.isocpp.org> wrote:


To be fair, I assume that Matheus is talking only about the "true names" of the types — like, the ones that contribute to mangling. (Do we have a standardese term for "true names"? I've never been aware of one.)

The concept I am familiar with here is the 'as-written' type. They mostly, in the C++ world, only have meaning to the programmer, not to the program, with a few exceptions, like alignment attributes attached to typedefs.

The problem is that C++ has a lot of constraints that make it difficult to preserve the 'as-written' type on the implementation level, so trying to assign (program) semantics to them means all implementers must make the high effort of supporting this.

Objective-C on the other hand has a lot of cases where typedefs have meaning (things like for example NSInteger), and that is one reason
why when they are combined in Objective-C++, this is much more additive than multiplicative.