--- Comment #41 from Jonathan M Davis <> 2012-06-04 09:35:33 
PDT ---
> void g(size_t p, ref size_t) pure
>    ++*cast(int*) p;

You're casting a size_t to a pointer. That's breaking the type system. The
assertion is guaranteed to pass as long as you don't break the type system.
That's exactly the same as occurs when casting away const. When you subvert the
type system, the compiler can't guarantee anything. It's the _programmer's_ job
at that point to maintain the compiler's guarantees. The compiler is free to
assume that the programmer did not violate those guarantees. If you do, you've
created a bug. This is precisely the sort of thing that comes up when someone
is crazy enough to cast away const on somethnig and try and mutate it. Such an
example is ultimately irrelevant, precisely because it violates the type

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to