// https://issues.dlang.org/show_bug.cgi?id=21367 | |
string result = ""; | |
struct RCArray(T) | |
{ | |
T* data; | |
this(this) | |
{ | |
result ~= "A"; | |
} | |
~this() | |
{ | |
result ~= "B"; | |
} | |
} | |
struct Variant(T...) | |
{ | |
union | |
{ | |
T payload; | |
} | |
this(this) | |
{ | |
result ~= "C"; | |
} | |
~this() | |
{ | |
result ~= "D"; | |
} | |
} | |
alias Ft = Variant!(RCArray!double, RCArray!int); | |
void fun(Ft a) {} | |
void main() | |
{ | |
Ft a; | |
Ft b = a; | |
} | |
static ~this() | |
{ | |
assert(result == "CDD"); | |
} |