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