Worst ideas/features in programming languages?

Paul Backus snarwin at gmail.com
Wed Jan 5 22:42:14 UTC 2022

On Wednesday, 5 January 2022 at 07:28:41 UTC, Timon Gehr wrote:
> How about something like opArgs, dealing specifically with this 
> case? (i.e., a function call `foo(x)` with a single argument is 
> immediately rewritten to `foo(x.opArgs)` if `x` has a member 
> `opArgs`, and this rewrite is applied exactly once.)

This mechanism seems too powerful to me; for example, one could 
write code like the following:

     struct S {
         string opArgs;

     string fun(S s) { return "S overload"; }
     string fun(string s) { return "string overload"; }

     void main() {
         assert(fun(S()) == "S overload"); // fails

If there is to be any mechanism for automatic expansion of 
tuples, it should probably be narrow enough to avoid enabling 
surprises like this one.

More information about the Digitalmars-d mailing list