Unique!struct bug - Re: unique_ptr | Unique for autoclose handle
Ali Çehreli
acehreli at yahoo.com
Thu Dec 15 20:12:12 UTC 2022
On 12/15/22 11:31, Nick Treleaven wrote:
> On Wednesday, 14 December 2022 at 17:41:07 UTC, Ali Çehreli wrote:
>> I've never used Unique but I think it has a bug (or a design issue?):
>> Its destructor is the following:
>>
>> ~this()
>> {
>> if (_p !is null)
>> {
>> destroy(_p);
>> _p = null;
>> }
>> }
>>
>> Because _p is a pointer, destroy(_p) will not dereference and destroy
>> what it points to. I think this is a bug with Unique. I think it
>> should do
>>
>> destroy(*_p);
>
> Now filed:
> https://issues.dlang.org/show_bug.cgi?id=23561
Thanks. I was hoping others more experienced with Phobos implementation
chime in. But to me, the intention is to destroy the object. One never
wants to destroy a pointer as there is no operation there.
As a minor proud moment, I do cover this issue:
http://ddili.org/ders/d.en/memory.html#ix_memory.destroy
> Do you think it's OK to just fix this or
I think this is a bug because the documentation clearly talks about
destroying the object:
https://dlang.org/library/std/typecons/unique.html
"When a Unique!T goes out of scope it will call destroy on the
resource T that it manages, unless it is transferred. One
important consequence of destroy is that it will call the
destructor of the resource T."
> do we need to do some kind of deprecation?
The behavior is so different from the intention that I don't think
anybody is using Unique anyway. :o)
Ali
More information about the Digitalmars-d-learn
mailing list