On Wednesday, 22 March 2017 at 13:19:32 UTC, Nicholas Wilson wrote:
On Wednesday, 22 March 2017 at 08:57:34 UTC, ANtlord wrote:

You still have the buffer (the class has to go somewhere!), but it is implicit (you can't refer to it directly only through the class reference) and so is the destructor call, as opposed to the emplace + explicit buffer combo. In the latter case the class destructor will not be called automatically so you must do it yourself with `destroy`.

My bad. It appears I need to clarify. I mean the case that I create object without delaying. I mean simple construction.

scope myObj = MyClass(1);

Answering own question:
In this case object is allocated using stack (according documention https://wiki.dlang.org/Memory_Management#Allocating_Class_Instances_On_The_Stack). Function `destroy` used for cleanup object from heap (according documention https://wiki.dlang.org/Memory_Management#Explicit_Class_Instance_Allocation).

Reply via email to