On Saturday, 1 June 2019 at 02:27:36 UTC, SrMordred wrote:
Its possible to call copyctor manually without calling dtor?
ex, what i did before:
struct T{ ~this(){ writeln("DTOR"); } this(this){
writeln("POSTBLIT"); } }
T a;
T b;
memcpy(&a,&b,T.sizeof);
a.__postblit;
/*
output:
POSTBLIT
DTOR
DTOR
*/
With copy ctors, not sure what to do.
struct T{
~this(){ writeln("DTOR"); }
this(ref return scope T self){ writeln("COPYCTOR"); } }
T a;
T b;
memcpy(&a,&b,T.sizeof);
a.opAssign(b); //???
//same as a = b;
/*
output:
COPYCTOR
DTOR
DTOR
DTOR
*/
I want something like '.__xcopyctor'
The copy constructor is implemented as an overload of `__ctor`:
import std.stdio;
struct T {
~this() { writeln("DTOR"); }
this(ref return scope T self) { writeln("COPYCTOR"); }
}
void main() {
T a;
T b;
a.__ctor(b);
}
/* Output:
COPYCTOR
DTOR
DTOR
*/
https://run.dlang.io/is/NeioBs