c++0x: libraries and features

John Freeman jfreeman08@gmail.com
Wed Jan 21 21:46:00 GMT 2009


David Vandevoorde wrote:
>
> Yes, that was also my impression: it's "almost resolved", though there 
> wasn't closure (ouch :-P).
>
> My last e-mail in that thread claimed that nonlocal lambda's didn't 
> require an ABI-mandated mangling.  I'd like some experienced voice to 
> confirm/deny that claim.
>
> Earlier, I made a proposal for mangling local lambda's that I think is 
> okay, but I haven't sent a patch to Mark M. yet. Here is a relevant quote
>
>> On Dec 17, 2008, at 10:39 AM, John Freeman wrote:
>>
>>> Doug Gregor wrote:
>>>>
>>>> We need something that encodes the context of the lambda (function
>>>> "::foo" with no parameters) followed by, perhaps, a numbering scheme
>>>> within that context. The context encoding needs to account for (at
>>>> least) inline functions, classes, and namespaces.
>>>>
>>>
>>> This sounds like a problem that must have been encountered before.  
>>> Is there already a solution for it?  At least for the unnumbered 
>>> portion?
>>
>>
>> Yes, see 5.1.6.  We can reuse that general scheme for local lambdas.  
>> E.g.:
>>
>>     <local-lambda-name> := Z <function encoding> E l [<discriminator>]
>>
>> and maybe introduce something similar for local unnamed classes:
>>
>>     <local-unnamed-class_name> := Z <function encoding> E u 
>> [<discriminator>]
>

I believe this is another relevant quote (amended by myself):

>>> In a default argument, we could mangle it as if it's part of the
>>> entity where the default argument lives (in a function or template).

>>
>> I believe it would require a different [discriminator] from the entities local to that
>> function/template, though (since the the two might not coexist in the same
>> translation unit).

>
> Ah, right. So we need to have a separate mangling scheme and [discriminator]
> for the default arguments and for the entities local to that
> function/template.


- John



More information about the Libstdc++ mailing list