Disabling struct destructor illegal?

Steven Schveighoffer schveiguy at gmail.com
Fri Jul 20 12:43:39 UTC 2018


On 7/19/18 4:50 AM, RazvanN wrote:
> struct A
> {
>      int a;
>      @disable ~this() {}
> }
> 
> void main()
> {
>      A a = A(2);
> }
> 
> Currently, this code yields:
> 
> Error: destructor `A.~this` cannot be used because it is annotated with 
> @disable
> 
> I was expecting that disabling the destructor would make it as if the 
> struct does not have a destructor, instead it makes the program not 
> compile.

That's a misunderstanding of @disable. @disable *defines* the function, 
and makes it uncallable.

If you want a struct without a destructor, just don't define one. Or if 
you want one that eliminates the default destructor (in the case where 
you have members with dtors), define an empty destrutor.

-Steve


More information about the Digitalmars-d-learn mailing list