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