Hello Steven,

On Mon, 09 Aug 2010 10:53:48 -0400, BCS <n...@anon.com> wrote:

C's api can be modified at declaration.  It has no mangling, so you
can  type it how it should be (if C had const).  For example:
extern(C) int strlen(const(char)* str);
I find that much more pleasant than having to cast away const.
OTOH that is effectively a hidden cast and has 100% of the same
issues  (re undefined behavior) as casting away const while being
slightly  harder to find.

But you just said that casting and reading is not undefined?  Isn't
this  the same thing?

Casting away const or tacking const into a extern(C) prototype is safe under exactly the same conditions. The gains a savings of a few keystrokes and looses some degree of findability, aside from that, there is effectively no difference between them.

if you are sure
a  const or immutable piece of data is on the heap/stack, it should be
reasonable to be able to modify it for performance gains.

A conforming compiler can be implemented in such a way that you can never be sure of that without looking at the generated asm or even in such a way that it can't be know till runtime.

--
... <IXOYE><



Reply via email to