On 05/05/2018 02:30 AM, Neia Neutuladh wrote:
On Friday, 4 May 2018 at 19:12:16 UTC, ag0aep6g wrote:
If toDelegate isn't (always) @safe, how can you be sure that your wrapper is?
[...]
Looking at the code, I believe there are several casts that the compiler can't verify but are used safely.

If you're right and the casts are used safely, and if that's the one thing that makes toDelegate @system, then toDelegate should be marked as @trusted. Or the casts should be @trusted, if they can be isolated like that.

But belief isn't strong enough for that. You should be certain when applying @trusted. And thinking of all the ways that code might be unsafe is tricky, especially when you're dealing with arbitrary types in a template.

Also, TFunc may have an unsafe destructor.

[...]> If it's a user-defined type with
opCall, that's something to pay attention to, but it's beyond the scope of the original question.

That's the one. The scope of the original question doesn't matter if you don't restrain your function in the same way. Your function accepts structs, so you have to take them into account. Also, the thread is about "anything" callable. That includes structs with opCall.

Reply via email to