Challenge: write a reference counted slice that works as much as possible like a built-in slice
RazvanN
razvan.nitu1305 at gmail.com
Wed Dec 15 08:27:25 UTC 2021
On Tuesday, 14 December 2021 at 12:14:52 UTC, Tejas wrote:
>
> Sorry for reviving this thread, was just sifting through...
> The following code also outputs `dtor!`, unfortunately :(
>
> ```d
>
> import std.stdio:writeln;
>
> struct S{
> @disable this();
> ~this(){
> writeln("dtor!");
> }
> }
>
> void main(){
> S s = void;
> }
>
> ```
>
> Compiler :
> LDC - the LLVM D compiler (1.25.0):
> based on DMD v2.095.1 and LLVM 11.1.0
This has come up in the past and typically folks have agreed that
once you used void initialization it is your problem to make sure
that the object is valid before destruction. I, personally, do
not agree with that; since you are bypassing construction, you
should also bypass destruction, however, an argument can be made
for both sides.
My perspective is that currently you have an easy way to bypass
destruction but you need to do the union trick to bypass
destruction. I would vote for having a dip that would somehow
make it easy to express the intent that you want to avoid
destruction for a specific object.
More information about the Digitalmars-d
mailing list