On Wednesday, 25 January 2017 at 18:12:18 UTC, Jonathan M Davis
wrote:
Fine, but in the vast majority of cases, you're calling .ptr,
because you're going to be passing the pointer to C code, in
which case, doing &arr[0] buys you very little, since the C
code is inevitably going to be reading more than that one
element,
In that case, calling the C function isn't going to be @safe
anyway, so you might as well use .ptr.
So, telling the programmer to use &arr[0] instead of arr.ptr is
just plain bizarre.
What you call bizarre is a simple, actionable explanation (which
is especially important as the behaviour was necessarily a
backwards-incompatible change). If &arr[0] doesn't actually apply
to your code, then it was mistakenly @safe before.
— David