On Monday, 4 January 2016 at 09:44:35 UTC, Walter Bright wrote:
On 1/1/2016 3:33 AM, Russel Winder via Digitalmars-d wrote:
Or alternative 4, fix D so that proper operator definition can be
achieved.

The way D's operator overloading is designed is not a mistake. It's limitations are a feature, not a bug. It was deliberately set up to:

1. Make doing C++ style iostreams hard.

struct _cout {

  auto opBinary(string s : "<<", T)(auto ref T rhs) {
    import std.stdio : write;

    write(rhs);
    return this;
  }
}

_cout cout;
void main() {
  cout << "Walter " << "hates " << "this." << endl;
}


and yet, I can't overload the address-of operator because Walter is afraid I might shoot my foot.

Reply via email to