class A { ~this(){ import std.stdio; writeln("hello"); } }
auto RAII(T)() if (is(T == class)) { struct Inner { private ubyte[__traits(classInstanceSize, T)] buff; T c; alias c this; ~this() { destroy(c); } } Inner tmp; import std.conv : emplace; tmp.c = tmp.buff.emplace!T; return tmp; } void main() { auto a = RAII!A; }