Перегрузка оператора унарного отрицания в D

Код

struct test
{
   private real value;

   this(real value)
   {
      this.value = value;
   }

   bool opUnary(string op)() if (op == "!")
   {
      return !value;
   }
}

void main()
{
   test a = 123.12345;
   bool b = !a;
}

Ошибка компиляции

prog.d(19): Error: expression a of type test does not have a boolean value

http://ideone.com/Kec81

Также тестировалось на dmd 2.053, 2.054

Что не так с моим кодом?

5
задан Stas 7 August 2011 в 18:28
поделиться