Hello,

Here's a short program which creates a type for points and overloads '+' to do element wise addition as well as addition to floats, however it produces an error:

----------------------------------------------------------------------
import std.stdio ;

struct Pt
{
  float x , y ;

  Pt opBinary ( string op ) ( Pt a ) if ( op == "+" )
    { return Pt ( x + a.x , y + a.y ) ; }

  Pt opBinary ( string op ) ( float a ) if ( op == "+" )
    { return Pt ( x + a , y + a ) ; }
}

void main () { Pt ( 1.0 , 2.0 ) + Pt ( 3.0 , 4.0 ) ; }
----------------------------------------------------------------------

The error:

pt_overload_test_a.d(15): Error: template instance opBinary!("+") matches more than one template declaration, pt_overload_test_a.d(8):opBinary(string op) if (op == "+") and pt_overload_test_a.d(11):opBinary(string op) if (op == "+")

So, how should I go about this? :-)

Ed

Reply via email to