commit 8c7c7a83f4a1b4f3ff7049aef37728a34e975108
parent 9e4165548dbdd5d72b281cc5d773e54edef0c63d
Author: Luís Ferreira <contact@lsferreira.net>
Date: Mon, 15 Nov 2021 16:07:51 +0000
posts: add scope(exit) destroy function to call foo dtor
Signed-off-by: Luís Ferreira <contact@lsferreira.net>
Diffstat:
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/content/posts/zet-1-classes-betterc-d.md b/content/posts/zet-1-classes-betterc-d.md
@@ -81,7 +81,8 @@ T alloc(T, Args...)(auto ref Args args)
void destroy(T)(ref T t)
{
- t.__dtor();
+ static if (__traits(hasMember, T, "__dtor"))
+ t.__dtor();
() @trusted {
import core.memory : pureFree;
pureFree(cast(void*)t);
@@ -109,6 +110,7 @@ extern(C++) class Foo
extern(C) int main()
{
Foo foo = alloc!Foo(2, 2.0f);
+ scope(exit) destroy(foo);
int a = foo.a; // 4
float b = foo.b; // 2.0