https://issues.dlang.org/show_bug.cgi?id=14389
--- Comment #3 from Ketmar Dark <ket...@ketmar.no-ip.org> --- or simply introduce syntax to "unattribute" something. this is much more useful, imo, and not breaking any existing code. by the way: class C { private: @safe: void foo() {} public: void asd() @system {} // I don't want this stuff to be @safe! // wow, `@system` overrides `@safe` here! } this is very sad situation, as we can override `@safe`/`@trusted`/`@system`, but has no way to override `static`, or `final`, or `pure`, or `nothrow`, or... but: class C { final: void foo() {} static: void bad() {} !final: !static: void asd() {} // virtual method, wow! } the open question is what `!public` means, for example. i guess it's `private`. --