RAII and classes
cym13 via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Mar 9 02:48:30 PST 2016
On Wednesday, 9 March 2016 at 10:28:06 UTC, John Colvin wrote:
> Potential for leaking references from alias this aside, is
> there some reason that I shouldn't do this for all my C++-like
> RAII needs:
>
> 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;
> }
That's almost literally what std.typecons.scoped does.
More information about the Digitalmars-d-learn
mailing list