D's Destructors are What Scott Meyers Warned Us About

12345swordy alexanderheistermann at gmail.com
Wed May 23 17:29:11 UTC 2018


On Wednesday, 23 May 2018 at 15:43:31 UTC, Steven Schveighoffer 
wrote:
> On 5/23/18 9:12 AM, Steven Schveighoffer wrote:
>> On 5/22/18 9:59 PM, sarn wrote:
>
>>> (Unfortunately destroy() currently isn't zero-overhead for 
>>> plain old data structs because it's based on RTTI, but at 
>>> least it works.)
>> 
>> Hm.. that should be fixed. I don't see why we can't just do = 
>> T.init, we should at least be optimizing to this for small 
>> enough structs.
>
> Coincidentally, this JUST changed due to a different reason: 
> https://github.com/dlang/druntime/pull/2178
>
>> Please file an enhancement request.
>
> I still think it could be better, so I added a further issue:
> https://issues.dlang.org/show_bug.cgi?id=18899
>
> -Steve

The destroy function for class/structs badly need an overhaul. 
Even more so for class, as (IMO) it should be responsibility of 
the class designer when it comes to deinitializing (The exception 
being that creating the class  exclusively for the GC to use of 
course), as finalize function which destroy calls is external, in 
which information such as attributes is lost


More information about the Digitalmars-d mailing list