On Sunday, 26 February 2012 at 23:20:24 UTC, James Miller wrote:
I'm with Jonathon, using `ref` is the best way, it is
ridiculous to
think that the compiler should be able to figure out what's
going on
in every case. After getting hit by it a couple times, then
you'll
remember to use ref if you want to alter a copy.
There's no need for the compiler to figure anything out. I was
curious if there were any syntactic ways of solving this problem.
Changing the existing syntax is not really an option, but
brainstorming ideas can't hurt.
I agree that I can "just remember", but that's not a good way to
go about creating robust software. People make mistakes. D
already has lots of errors to help prevent against these kinds of
common mistakes and making the obvious thing correct and safe is
one of D's design goals.
By the way, its the same in other languages, you need to use
"reference" syntax to alter values in a loop.
C# isn't the same. If you iterate over structs you cannot modify
the iteration variable. You have to explicitly copy.