struct constructors and destructors.

SrMordred via Digitalmars-d digitalmars-d at puremagic.com
Wed Jul 19 07:09:32 PDT 2017


On Wednesday, 19 July 2017 at 09:09:40 UTC, Stefan Koch wrote:
> On Wednesday, 19 July 2017 at 07:48:28 UTC, Danni Coy wrote:
>> Is there a reason that the following code
>>
>> struct Foo
>> {
>>     this (string name)
>>     { do_something(name); }
>>
>>     ~this()
>>     { undo_something(); }
>> }
>>
>> Foo foo = void;
>>
>> void open()
>> {
>>     foo = Foo("test"); // <- this line
>> }
>>
>> tries to OpAssign foo to itself then calls foo's destructor?
>
> What happens is this.
>
> void open()
> {
>   foo = () {
>   Foo _tmp = Foo.__ctor("test");
>   return _tmp;
>   } ();
> }

Hm, isnt that wrong?
If I destroy resources on the dtor, wouldn't it invalidate the 
resource on the copy?
Also, C++ behaves differently



More information about the Digitalmars-d mailing list