Frist Draft (in this forum): Enum Parameters
Paul Backus
snarwin at gmail.com
Tue May 7 15:20:24 UTC 2024
On Tuesday, 7 May 2024 at 11:23:10 UTC, Quirin Schroll wrote:
> You’re right in that `forward` better be mentioned in the DIP.
> Writing an answer to this post, I found out that not only could
> `forward` easily be adapted to recognize `enum` parameters and
> handle them properly by leaving them alone, `forward` actually
> would handle them correctly today.
Good to know; thanks for looking into this.
However, the main issue here is not `forward`--it's that in order
to write correct generic code with this feature in place, D
programmers will forever be obliged to defensively write `auto
enum auto ref` on any parameter they intend to forward (and will
have to go back and add `auto enum` to many of their existing
`auto ref` parameters).
Most D programmers already forget to add `auto ref` to such
parameters (see for example the vast swathes of Phobos which fail
to compile when used with non-copyable types). Adding an
additional thing for them to forget is, like I said, setting them
up for failure.
(Also, `auto enum auto ref` is quite ugly and "attribute spam"-y,
and some programmers will no doubt leave it out of their code
intentionally in order to make the code look nicer--as they
already do with existing attributes and parameter storage
classes.)
More information about the dip.development
mailing list