Dicebot via Digitalmars-d
digitalmars-d at puremagic.com
Sun Nov 15 07:20:22 PST 2015
On Sunday, 15 November 2015 at 15:09:25 UTC, Jonathan M Davis
> After the call to bar, the compiler can guarantee that the
> value of foo has not changed, because it's not possible for bar
> to access foo except via a const reference, and it can clearly
> see that, because it can see that it's not possible for bar to
> access foo except via the reference that's passed to it.
Note that it can only do so if escape analysis is able to prove
no other reference escapes to the same data. Otherwise it can be
mutated even during that function call in other thread. All
together it makes benefits of such deduction absolutely not worth
UB limitation in my opinion.
For pure functions it is quite different story though and I agree
that demanding it to be UB there is totally legitimate.
More information about the Digitalmars-d