On Wednesday, 28 September 2016 at 09:43:38 UTC, Mike Parker
wrote:
Let's try this again.
This attribute block can be terminated by a corresponding
protection attribute block:
// Begin private
private:
void foo() {}
// End private
public:
void bar() {}
But not all attributes have a corresponding attribute to turn
them off:
// Begin @nogc
@nogc:
...
// End with scope/file
It would be a nice convenience to have something like this:
@nogc:
:end
Yes, I'm aware I could do this:
@nogc {}
But given the choice of : and {}, I'm tending to prefer the
former these days. The lack of a way to turn off some
attributes forces me to use {}. I recall discussions about
something like @nogc(off) or some such. Was that ever approved?
If not, I'd love to have something like :end, though I'm not
attached to the name.
AFAIR, last year or so, Andrei approved the proposal for
attr(bool expr), eg:
@nogc:
// no gc code here
@nogc(false):
// code that's allowed to use the gc here
class Base(bool overridableImpl)
{
final:
final(overridableImpl) void impl() { /* ... */
}
But still no one has stepped in to do the implementation.