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

David Vandevoorde daveed at edg.com
Wed Dec 17 16:00:25 UTC 2008


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).  There a discriminator count cannot be scope  
based (since the mangling then could depend on which header files were  
previously included, etc.).

	Daveed





More information about the cxx-abi-dev mailing list