On Sunday, 2 October 2016 at 17:22:57 UTC, Basile B. wrote:
On Sunday, 2 October 2016 at 15:54:38 UTC, Satoshi wrote:
Hello,

why
pure @safe nothrow @nogc struct Point {
}

isn't same as

struct Point {
pure: @safe: nothrow: @nogc:
}

??

This is not specified but attributes aren't applied to the scope created by the declaration. Which is a good thing, for example with the visibility attributes it would be a problem, imagine the following declarations:

struct Foo(T)
{
private struct Range // imagine that private as a inner "private:"
    {
        void popFront(); // would be private !!
        bool empty(); // would be private !!
        T front(); // would be private !!
    }
}

So this is really not something anyone would want.

But shared or abstract attribute can be applied to scope created by class so nothrow @safe @nogc or pure should be too.


It should follow same rules as in function declaration.

void test() @safe {
  void thisFunctionIsSafeToo() {

  }
}

Reply via email to