Is it possible to implement operators as ordinary functions?

data pulverizer data.pulverizer at gmail.com
Tue May 19 02:36:24 UTC 2020


I was wandering if it possible to implement operators as ordinary 
functions instead of as member functions of a class or struct for 
example something like this:

```
import std.stdio: writeln;

struct Int{
   int data = 0;
}

Int opBinary(string op)(Int x1, Int x2)
{
   static if((op == "+") || (op == "-") || (op == "*") || (op == 
"/"))
   {
     int ret;
     mixin("ret = x1.data " ~ op ~ " x2.data");
     return ret;
   }else{
     static assert(0, "Operator unknown.");
   }
}

void main()
{
   Int x = Int(1);
   Int y = Int(2);
   writeln("Output: ", x + y);
}

```


More information about the Digitalmars-d-learn mailing list