Thread overview
refCounted not @safe?
May 01, 2020
H. S. Teoh
May 01, 2020
12345swordy
May 01, 2020
struct S {}

void main() @safe
{
   import std.typecons;
   auto s = S().refCounted;
}

Error: @safe function D main cannot call @system function std.typecons.refCounted!(S).refCounted
Error: @safe function D main cannot call @system destructor std.typecons.RefCounted!(S, cast(RefCountedAutoInitialize)0).RefCounted.~this

How do I do refCounted in @safe code?
May 01, 2020
On Fri, May 01, 2020 at 05:31:57PM -0400, Steven Schveighoffer via Digitalmars-d wrote:
> struct S {}
> 
> void main() @safe
> {
>    import std.typecons;
>    auto s = S().refCounted;
> }
> 
> Error: @safe function D main cannot call @system function
> std.typecons.refCounted!(S).refCounted
> Error: @safe function D main cannot call @system destructor
> std.typecons.RefCounted!(S,
> cast(RefCountedAutoInitialize)0).RefCounted.~this
> 
> How do I do refCounted in @safe code?

Use @trusted. :-/


T

-- 
Time flies like an arrow. Fruit flies like a banana.
May 01, 2020
On Friday, 1 May 2020 at 21:31:57 UTC, Steven Schveighoffer wrote:
> struct S {}
>
> void main() @safe
> {
>    import std.typecons;
>    auto s = S().refCounted;
> }
>
> Error: @safe function D main cannot call @system function std.typecons.refCounted!(S).refCounted
> Error: @safe function D main cannot call @system destructor std.typecons.RefCounted!(S, cast(RefCountedAutoInitialize)0).RefCounted.~this
>
> How do I do refCounted in @safe code?

You can't. You can't make it safe, unless you fix the bug regarding destructors not being attribute friendly.

-Alex