[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