digitalmars.D.learn - How use SafeRefCounted in safe code safely?
- kdevel (43/43) Mar 23 ```d
```d safe: void foo () { import std.typecons : SafeRefCounted; SafeRefCounted!int s; } unittest { import std.exception : assertNotThrown; assertNotThrown (foo); } ``` ``` $ dmd -unittest -main -run sr.d sr.d(6): Error: ` safe` function `sr.foo` cannot call ` system` destructor `std.typecons.SafeRefCounted!(int, RefCountedAutoInitialize.yes).SafeRefCounted.~this` [...]linux/bin64/../../src/phobos/std/typecons.d(7399): `std.typecons.SafeRefCounted!(int, RefCountedAutoInitialize.yes).SafeRefCounted.~this` is declared here ``` Inspired by [1] I tried to compile with `-dip1000` (`-preview=dip1000`): ``` dmd -dip1000 -unittest -main -run sr.d 1 modules passed unittests ``` So in order to use a phobos template in the ` safe`-dialect of D I must enable the DIP1000-mode of the compiler? But what is the status of DIP1000? According to [2]'s boilerplate its status is "Superseded". Unfortunately it does not mention by what DIP1000 is superseded. My question is this: I need RAII for non-memory resources and I would like to implement this using SafeRefCounted. Assume all this is used in a function deployed into cars for autonomous driving. Support for this software must be available for the next 20 years. Is safe + SafeRefCounted + -dip1000 future-proof? [1] Issue 13983 - RefCounted needs to be safe/Comment 9 https://issues.dlang.org/show_bug.cgi?id=13983#c9 [2] Scoped Pointers https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md
Mar 23