On Friday, 6 October 2017 at 20:36:47 UTC, Jonathan M Davis wrote:

It forces them to actually be designed with the type and be easily located with the type. Would you want a programmer to be able to go and implement opBinary!"+" for strings? I sure wouldn't. And I don't want anyone doing that for user-defined types that they didn't define either.


Hmm, you could think of it like the current default is that you cannot do outer operator overloading. We have @disable this(); for disabling default construction. What about something like
@outer T opBinary(string op)(T)
    if(op == "+")
which means that it allows opBinary to be defined outside the struct/class. The default would be that it's not allowed. And it would give a hint to somebody that they would need to look for that method elsewhere?

Reply via email to