On Tuesday, July 09, 2013 00:35:32 Ugbar Ikenaki wrote: > Here's one more question: > > Before I knew that opEquals existed, I tried overloading the > equality expressions (== and !=) in opBinary using the code > below. It worked. Why would the overloaded opBinary version get > called if the equality expressions are held in opEquals? I'm just > interested in knowing how dmd chooses where to take an expression > from if it lies in multiple places (e.g. == in opEquals and > opBinary), even if what I did was just add the == operator to > opBinary. (Is that what I did there?) > > override bool opBinary( string op ) ( Rect r ) if( op == > "==" ) { > //Check if rectangle coordinates are equal > if( left == r.left && right == r.right && top == r.top && > bottom == r.bottom ) { > return true; > } else { > return false; > } > } > > > Thanks!
I don't believe that that will ever work. If you want to overload == and !=, use opEquals. opBinary isn't used for that. Look at http://dlang.org/operatoroverloading.html if you want to see which function to use to overload for each operator. - Jonathan M Davis