[cxx-abi-dev] Proposed ABI changes for new C++0x SFINAE rules
David Vandevoorde
daveed at edg.com
Tue Jul 13 21:45:41 UTC 2010
On Jul 13, 2010, at 5:04 PM, Jason Merrill wrote:
> On 07/09/2010 06:11 PM, David Vandevoorde wrote:
>> If someone strongly prefers dropping the 0, or some other modification, I have no strong feelings about it.
>
> That would be my preference. The language specifically doesn't specify that nullptr has a value, so I'd rather not put it in the mangling.
Okay, I'll make that change.
>
>> We need a way to e.g. distinguish "new T" and "new T()".
>
> Ah, OK.
>
>> ! <unresolved-name> ::= [gs] <base-unresolved-name> # x or (with "gs") ::x
>> ! ::= sr <unresolved-type> <base-unresolved-name> # T::x / decltype(p)::x
>> ! ::= srN <unresolved-type> <unresolved-qualifier-level>+ E <base-unresolved-name>
>> ! # T::N::x /decltype(p)::N::x
>> ! ::= [gs] sr <unresolved-qualifier-level>+ E <base-unresolved-name>
>> ! # A::x, N::y, A<T>::z; "gs" means leading "::"
>
> This doesn't seem to allow for, say, A::B<T>::x where A is a non-template class or namespace.
The intent was that the last production be used for that. In general, we cannot be sure about the "A" because a dependent left-hand expression could end up having e.g. a nested class A. I suppose there could be cases with a non-dependent left-hand? I'll look at clarifying that.
Thanks,
Daveed
More information about the cxx-abi-dev
mailing list