On Friday, 14 September 2018 at 18:13:49 UTC, Eugene Wissner
wrote:
Makes the code unreadable. You have to count all attributes in
the file, then negate them. Nobody should write like this and
therefore it is good, that there isn't something like __not.
For @nogc, pure and so forth there were imho a better proposal
with a boolean value:
@gc(true), @gc(false), pure(true), pure(false) etc. It is also
consistent with the existing UDA syntax.
The two proposals are extremely similar in effect. Under Adam D
Ruppe's proposal, I could write:
__not(@nogc) void foo() {}
Here, @nogc wasn't set, so I didn't need to specify any
attributes. If @nogc: had been specified a thousand times just
above this function, __not(@nogc) would still make `foo` be
not-@nogc.
Identically, under your proposal, I could write:
@gc(true) void foo() {}
If this is the entire file, the annotation has no effect. If
@gc(false) had been specified a thousand times just above this
function, the annotation would still make `foo` be not-@nogc.
There's no counting of attributes to negate. You just negate
everything that doesn't apply to this function.