Why postblit cannot be disabled when copy ctor is defined
Fanda Vacek
fanda.vacek at gmail.com
Thu Nov 7 17:28:44 UTC 2019
import std.stdio;
struct A
{
int x;
this(ref return scope A rhs)
{
writeln("copy ctor: ", x);
}
@disable this(this) {writeln("postblit: ", x); }
}
void main()
{
A a;
A b = a; // copy constructor gets called
}
I've got error: Error: struct `tst.A` is not copyable because it
is annotated with `@disable`
but it should not be used according to
https://dlang.org/spec/struct.html#struct-postblit
WARNING: The postblit is considered legacy and is not recommended
for new code. Code should use copy constructors defined in the
previous section. For backward compatibility reasons, a struct
that defines both a copy constructor and a postblit will only use
the postblit for implicit copying.
More information about the Digitalmars-d
mailing list