On 06/08/2010 21:37, div0 wrote:
You need to add a second template parameter for the function arguments and add a template constrait like so: struct Group { int i1; Group opBinary(string op, U) (U x) if(op == "+" && is(U: int)) { // do somehting return this; } Group opBinary(string op, U) (U rhs) if(op == "+" && is(U: Group)) { // do something return this; } }
And if you are old school C++ and don't like these new fangled template constraints you can use specialisation as well:
struct Group { int i1; Group opBinary(string op : "+", U: int) (U x) { // do somehting return this; } Group opBinary(string op : "+", U: Group) (U rhs) { // do something return this; } } -- My enormous talent is exceeded only by my outrageous laziness. http://www.ssTk.co.uk