D's Destructors are What Scott Meyers Warned Us About

Jonathan M Davis newsgroup.d at jmdavisprog.com
Wed May 23 17:47:12 UTC 2018


On Wednesday, May 23, 2018 17:29:11 12345swordy via Digitalmars-d wrote:
> 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

Regardless of what issues destroy may currently have, the entire reason that
it exists is to destroy objects - and class objects in particular. So, if it
doesn't currently work properly for that purpose, it needs to be fixed.

- Jonathan M Davis



More information about the Digitalmars-d mailing list