emplace, scope, enforce [Was: Re: Manual...]

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Jul 22 12:30:20 PDT 2010


Dmitry Olshansky wrote:
> On 22.07.2010 2:27, Andrei Alexandrescu wrote:
>> On 07/21/2010 03:35 PM, Dmitry Olshansky wrote:
>>> Thanks for kind feedback (and showing some optimization tricks). Also
>>> this implementation still has issues with it: it calls dtor twice. Not a
>>> good trait for RAII technique ! :)
>>> Since it's now considered useful I feel myself obliged to enhance and
>>> correct it. Sadly enough I still haven't managed to apply an inner
>>> template trick.
>>> Here's the end result along with a simple unittest:
>> [snip]
>>
>> The double destructor hits a bug in the compiler implementation. 
>> Anyway, here's the committed code:
>>
>> http://www.dsource.org/projects/phobos/changeset/1774
>>
>> It uses a new idiom that is enabled by auto returns - defines a struct 
>> inside the function and returns it. That's a veritable existential 
>> type! 
>> (http://stackoverflow.com/questions/292274/what-is-an-existential-type) 
>> I expect more of that idiom in the upcoming commits.
>>
> A cool idiom indeed!
> 
> I guess I should clarify the double destruction problem: it was caused 
> by static opCall, the current implementation in Phobos does not suffers 
> from it.

It doesn't, but just because it uses some heavy-handed tricks such as 
casting from an untyped buffer to Scoped. I found two distinct bugs by 
working on Scoped, which I'll submit soon.

Andrei


More information about the Digitalmars-d mailing list