The Status of Const

Kagamin spam at here.lot
Thu Aug 12 23:12:56 PDT 2010


Adam Ruppe Wrote:

> On the subject of rebindable, what about:
> 
> const Object o; // not rebindable, the whole thing is set once and const
> const(Object) o; // the Object is const, but the reference is not.
> 
> So, everything is rebindable unless the declaration has a
> const/immutable on the outside.
> 
> int a; // rebindable (obviously)
> const(int) a; // the int never changes... but the variable a might.

int "value" is effectively immutable, it doesn't matter what qualifier you apply to it. The variable can be still reassignable to a different value.

> Meaningless for a value type, but makes sense for a reference type
> const int a; // the whole thing is set once and never changes. The
> const applies to the variable a itself, but the transitive property
> propagates it down to the int type too.

There is a difference between whether you can assign the whole struct or its distinct members. There was some words about this in the docs.


More information about the Digitalmars-d mailing list