any news on const/invariant?

Janice Caron caron800 at googlemail.com
Tue Nov 27 11:20:12 PST 2007


On 11/27/07, Walter Bright <newshound1 at digitalmars.com> wrote:
> Since a const array cannot be implicitly cast to a non-const, he'll get
> a compilation error.

Not necessarily. They might be relying on implicit cast to const in
the first place. e.g.

    class A
    {
        const ubyte[] f()
        {
            ubyte[] b;
            /* initialise b */
            return b;
        }
    }

Here the programmer (who hasn't yet learned that "const ubyte[] f()"
means "ubyte[] f() const" rather than "const(ubyte[]) f()") is
assuming that when b is returned, it will be implicitly cast from
ubyte[] to const ubyte[]. That assumption is wrong, but I believe the
code still compiles.


> It's the big feature of const-correctness, the code
> won't compile if you get it wrong.

Of course, and that's why I love it.

But not all incorrect code involving const is necessarily const-incorrect. :-)


> > Other possible syntaxes have been suggested. Here's another one to consider:
> >     ReturnType const(functionName)(parameters...)
>
> Sorry, but that's awful looking

I completely agree. Sorry to have mentioned it.



More information about the Digitalmars-d mailing list