On Wednesday, 26 June 2013 at 04:06:05 UTC, Jonathan M Davis wrote:
Yeah, that should work for the conditions in if, while, and for loops but won't work for anything else (_maybe_ ternary operators, but I'm not sure). So, if you need to be able to do !obj in the general case, that's not going to
work
...

import std.stdio;

struct S {
  int x;
  bool opCast(T)() if (is(T == bool)) {
    return x == 0;
  }
}

void main() {   
  auto s = S(1);
  auto b = !s;
  writeln(b);   // true
}

Is this not supposed to work?

Reply via email to