[cxx-abi-dev] mangling for c++17 decomposition declarations

John McCall rjmccall at apple.com
Sat Aug 13 00:29:30 UTC 2016


> On Aug 12, 2016, at 4:59 PM, Richard Smith <richardsmith at google.com> wrote:
> 
> C++17 decomposition declarations are (surprisingly) permitted at global scope. They can't be forward-declared nor made inline (yet...), and it seems likely that the wording probably didn't *mean* to allow them to be declared as templates, so we don't appear to need a cross-vendor mangling for them. However, establishing a convention would be useful for demanglers.
> 
> For now, I'm mangling global decomposition declarations as:
> 
>   <unqualified-name> ::= DC <source-name>* E
> 
> ... where the <source-name>s are the names of the bindings. (I'm mangling the bindings in the obvious way, as if they were reference declarations, but they get a mangled name even at global scope.)
> 
> We could get away with mangling only the name of the first binding, but the extra information seems useful to people looking at the mangled name.
> 
> Thoughts? Is it worth specifying this in the ABI?

For those of us who aren't following the standards process that closely, would you mind explaining the more basic ABI impact of the feature?  Are the individual bindings separate objects that should be mangled as it they were actually declared separately, and so this compound mangling only serves to uniquely identify the initializer in case it contains entities that need / ought to be mangled?

John.


More information about the cxx-abi-dev mailing list