Temporary @trusted scope
Steven Schveighoffer
schveiguy at gmail.com
Tue Dec 18 13:52:29 UTC 2018
On 12/18/18 6:29 AM, Simen Kjærås wrote:
> On Tuesday, 18 December 2018 at 10:14:50 UTC, Per Nordlöw wrote:
>> What's the preferred way of creating a temporary @trusted scope
>> without writing a separate function?
>
> Jonathan's idea might also be encapsulated in a function, just like
> assumeUnique in Phobos:
>
> import std.stdio;
>
> template unsafe(alias fn) {
> @trusted auto unsafe(T...)(T args) {
> return fn(args);
> }
> }
>
> @system void fun(int n) {
> writeln("foo!");
> }
>
> @safe unittest {
> unsafe!({
> fun(2);
> });
>
> unsafe!fun(2);
> }
Wow, I really like this. The only real problem is that one generally
searches for @trusted when looking for unsafe code, but unsafe is pretty
obvious too. Also, args should be auto ref.
Only thing better I can think of (for the second example) is to define a
prototype with the correct information, only with @trusted (and specify
the mangle). But any decent compiler should get rid of any overhead there.
-Steve
More information about the Digitalmars-d-learn
mailing list