On Monday, 12 June 2017 at 19:36:52 UTC, H. S. Teoh wrote:
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

Quick question about the signature, if I change it to (note the parens):

   public inout(Rational) opBinary(string op)(inout(Rational) rhs)

It no longer works, why is that?

Reply via email to