opEquals when your type occurs on the right hand side of an equality test

Ali Çehreli acehreli at yahoo.com
Wed Jul 31 20:08:00 UTC 2019


On 07/31/2019 01:03 PM, NonNull wrote:
> I am creating a specialized bit pattern (secretly represented as a uint) 
> as a struct S, but want to avoid `alias this` to maintain encapsulation 
> excepting where I overtly say. Specifically, I want to avoid making 
> arithmetic and inequalities available for S.
> 
> I have written opEquals to compare an S to a uint.
> 
> How do I write code to compare a uint to an S?
> 

I didn't know that it works both ways already:

import std.stdio;

struct S {
   bool opEquals(uint u) {
     writeln("called");
     return true;
   }
}

void main() {
   S s;
   s == 7;
   7 == s;
}

There are two "called"s printed...

Ali


More information about the Digitalmars-d-learn mailing list