opAdd and opAdd_r both match

Li Jie cpunion at gmail.com
Sun Dec 10 19:16:23 PST 2006


Test CODE:
---------------------------
class Foo{
    public:
    Foo opAdd(Foo foo){
        return null;
    }

    Foo opAdd_r(Foo foo){
        return null;
    }
}


void main(){
    Foo foo1 = new Foo;
    Foo foo2 = new Foo;
    Foo foo3 = foo1 + foo2;
}

---------------------------
$ dmd zzzz.d
zzzz.d(16): Error: overloads Foo(Foo foo) and Foo(Foo foo) both match argument
list for opAdd


Why dose not select opAdd automatically? like python:

class Foo:
    def __add__(self, v):
        print "call add"
    def __radd__(self, v):
        print "call radd"

foo1 = Foo()
foo2 = Foo()
foo1 + foo2         # call __add__


More information about the Digitalmars-d-learn mailing list