git

My personal website source code
Log | Files | Refs | Submodules | README | LICENSE

commit 8c7c7a83f4a1b4f3ff7049aef37728a34e975108
parent 9e4165548dbdd5d72b281cc5d773e54edef0c63d
Author: Luís Ferreira <[email protected]>
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 <[email protected]>

Diffstat:
Mcontent/posts/zet-1-classes-betterc-d.md | 4+++-
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