What's the authoritative difference between immutable and const for reference types?

Simen kjaeraas simen.kjaras at gmail.com
Sat Jun 26 04:31:41 PDT 2010


Justin Johansson <no at spam.com> wrote:

> Specifically, I wish to have class which has a member variable which  
> cannot be changed (and is guaranteed not to change) and this member  
> variable happens to be a reference type (i.e. it's a pointer in C++  
> parlance) and, further more, the instance of the class which that  
> variable refers to is to be deep immutable.
>
> For instance, with
>
> class Foo
> {
> }
>
> class Bar
> {
> 	Foo foo;
> }
>
> consider instances of Foo to be in ROM and instances of Bar to be in RAM  
>   and once a Bar instance is constructed, the member variable foo itself  
> is not allowed to be modified.

What you want is

class Bar
{
     immutable Foo foo;
}

Now, I believe there are some problems constructing immutable objects, for
which the assumeUnique template in std.contracts is created.

-- 
Simen


More information about the Digitalmars-d mailing list