On Wednesday, 28 September 2016 at 20:16:08 UTC, Walter Bright wrote:
Because there is no way to stop the former but still have operator overloading.

To reiterate, operator overloading exists in D to support the inclusion of arithmetic library types. Any other purpose is discouraged, and that includes expression templates and things like << for iostreams.

This is an obsolete way of thinking about operators. Operator overloading exists to make the programmer's life easier, and limiting the ways in which a valuable tool can be used drives people to languages which allow them to be more expressive.

For my job I write Python. We use a database layer called sqlalchemy that allows us to express queries by writing, for example, `session.query(some_table).filter(row1 == row2)` and I cannot begin to express how useful this is when writing code, when maintaining code, and when attempting to understand code that someone else wrote.

The objective should never be to stop the programmer from doing something because you personally dislike the practice.

Reply via email to