blob: f8e3a82420ad4595d6c39947720c66b0f6d70d26 [file] [log] [blame]
module imports.a15079;
Vector!string parseAlgorithmName()
{
assert(0);
}
struct Vector(ALLOC)
{
@disable this(this);
RefCounted!(Vector, ALLOC) dupr()
{
assert(0);
}
}
struct RefCounted(T, ALLOC)
{
~this()
{
T* objc;
.destroy(*objc);
}
}
// ----
void _destructRecurse(S)(ref S s)
if (is(S == struct))
{
static if (__traits(hasMember, S, "__xdtor") &&
__traits(isSame, S, __traits(parent, s.__xdtor)))
{
s.__xdtor();
}
}
void destroy(T)(ref T obj) if (is(T == struct))
{
_destructRecurse(obj);
() @trusted {
auto buf = (cast(ubyte*) &obj)[0 .. T.sizeof];
auto init = cast(ubyte[])typeid(T).init();
if (init.ptr is null) // null ptr means initialize to 0s
buf[] = 0;
else
buf[] = init[];
} ();
}