Operator overloading
Jarrett Billingsley
kb3ctd2 at yahoo.com
Thu May 10 12:41:15 PDT 2007
"silverling" <este_aqui_ at hot_mail.com.remove.underscores> wrote in message
news:f1vqkm$11li$1 at digitalmars.com...
>I have overloaded the multiplication operator like this
>
> opMul(T)(T number){...}
> opMulAssign(T)(Tn number){...}
>
> Now, I want another multiplier to multiply with a specific class (itself)
> so generally, one would write (after the other overloads)
>
> opMult(T:classA)(T multiplier)
>
> as it is specified on the language specs
> http://www.digitalmars.com/d/template.html under the "Specialization"
> section. However, DMD refuses to compile, saying that "specialization not
> allowed for deduced parameter T". I'd really hate to have to overload the
> opMul with real/long/cfloat/classA/etc. How can I fix this?
Use static if and is() inside the function:
blah opMul(T)(T number)
{
static if(is(T : classA))
{
// code for classA version
}
else
{
// for other types
}
}
More information about the Digitalmars-d-learn
mailing list