Generic operator overloading for immutable types?

H. S. Teoh via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jun 12 12:36:52 PDT 2017


On Mon, Jun 12, 2017 at 07:38:44PM +0000, Gary Willoughby via Digitalmars-d-learn wrote:
> In the following code is there any way to make the `opBinary` method
> generic to be able to accept immutable as well as a standard type? The
> code currently passes the unit test but I wonder if I could get rid of
> the duplication to overload the operator? I'm failing badly.

This is what inout was designed for:

 	public inout Rational opBinary(string op)(inout Rational rhs)
 	{
 		static if (op == "+")
 		{
 			return inout(Rational)(0, 0);
 		}
 		else
 		{
 			static assert(0, "Operator '" ~ op ~ "' not implemented");
 		}
 	}

That should do the trick.


T

-- 
Frank disagreement binds closer than feigned agreement.


More information about the Digitalmars-d-learn mailing list