On Tuesday, September 13, 2016 17:59:09 Adam D. Ruppe via Digitalmars-d-learn wrote: > On Tuesday, 13 September 2016 at 17:52:48 UTC, Jonathan M Davis > > wrote: > > It's really intended for disabling features that would normally > > be there. I don't know why it would ever make sense to @disable > > a normal function. > > Consider the case of `alias this` or a mixin template. You might > make a wrapper type that disables a particular operation by > writing `@disable void opBinary(op)` so it won't forward to the > underlying thing.
Ah. That makes sense. Thanks for pointing out that use case. And actually, I think that that use case further supports the idea that what code should be testing for is whether an operation works and not whether it's @disabled. In the general case, you don't even have any guarantee that the type being aliased has an operation that would need to be @disabled. And from the caller's perspective, it shouldn't matter whether the + operator doesn't work because it wasn't declared or because it was @disabled. - Jonathan M Davis