On Thursday, 15 May 2014 at 13:42:58 UTC, Steven Schveighoffer
wrote:
On Thu, 15 May 2014 09:24:54 -0400, Ola Fosheim Grøstad
<ola.fosheim.grostad+dl...@gmail.com> wrote:
That's the wrong attitude to take when it comes to the
compiler and runtime.
There are always ways around the guarantees. This one isn't as
detectable, since there is no "red-flag" cast or attribute. But
I see no utility in such code.
I have to agree with Ola here. If you write a piece of pure,
@safe code, there should be no way for compiler optimizations to
make your code behave differently.
This is not only because implicitly allowing unsafe code would be
against the design philosophy behind D, but also as attribute
inference might tag functions as pure without the programmer
explicitly specifying so.
In any case, the alternative is to have D pure functions avoid
using pointers. It's as drastic as that.
I'd suspect that it is enough to disallow using the content of
pointers explicitly, i.e. as a sequence of bytes instead of just
a handle to an object.
David