DIP 1028---Make @safe the Default---Community Review Round 1

jmh530 john.michael.hall at gmail.com
Wed Jan 15 19:13:50 UTC 2020


On Wednesday, 15 January 2020 at 18:26:31 UTC, Walter Bright 
wrote:
> [snip]
>> I noticed that even templated class member functions are 
>> currently @system unless tagged @safe (for good reason). So 
>> there's going to be a lot of code out there like this.
>
> Templated functions get their safety inferred if not explicitly 
> marked.

Even for templated member functions? Running the code below 
causes an error. The way @safe flows through to nested scopes 
seems to override it.

import std;

@safe pure:

struct Foo {
     void foo(T)() {
         int x;
         int* y = &x;
     }

     void bar() {
     }
}

void main() {
     debug {
         writeln(isSafe!(Foo.foo!int));
         writeln(hasFunctionAttributes!(Foo.foo!int, "pure"));
         writeln(isSafe!(Foo.bar));
         writeln(hasFunctionAttributes!(Foo.bar, "pure"));
     }
}


More information about the Digitalmars-d mailing list