[cxx-abi-dev] Mangling C++0x Lambdas
    David Vandevoorde 
    daveed at edg.com
       
    Wed Dec 17 18:01:41 UTC 2008
    
    
  
On Dec 17, 2008, at 12:48 PM, David Vandevoorde wrote:
>
> On Dec 17, 2008, at 12:05 PM, Doug Gregor wrote:
> [...]
>> Ah, right. Well, decltype will surely get us into trouble:
>>
>> template<typename Lambda> struct Y { };
>>
>> Y<decltype([](int x) -> int { return x; })> y;
>
>
> Having thought about that some more... I think that cannot be  
> matched across translation units either.
>
> I.e., every occurrence of a lambda has a different type.  E.g.:
>
>  template<typename Lambda> struct Y { };
>  extern Y<decltype([](int x) -> int { return x; })> y;  // Okay,  
> but...
>  Y<decltype([](int x) -> int { return x; })> y;         // Error:  
> not redeclared with the same type.
And I think that principle would cover all nonlocal uses of lambdas  
that require mangling.  I.e., it sufficient that those be mangled  
uniquely; reproducibility is not required (and therefore not really an  
ABI issue).
Have I got that right?
	Daveed
    
    
More information about the cxx-abi-dev
mailing list