[cxx-abi-dev] Mangling C++0x Lambdas

Doug Gregor doug.gregor at gmail.com
Wed Dec 17 16:17:45 UTC 2008


On Wed, Dec 17, 2008 at 8:00 AM, David Vandevoorde <daveed at edg.com> wrote:
>
> 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>]
>
>
> A tougher problem are namespace-scope lambdas (e.g., in initializers or
> default arguments).

In an initializer, we could mangle the name of the entity being
initialized (and then a counter, in case there are multiple lambdas in
the initializer).

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).

  - Doug



More information about the cxx-abi-dev mailing list