this() immutable

Daniel Davidson nospam at spam.com
Wed Oct 16 09:54:30 PDT 2013


On Thursday, 13 June 2013 at 12:29:57 UTC, Simen Kjaeraas wrote:
> On Thu, 13 Jun 2013 14:17:22 +0200, Stephan Schiffels 
> <stephan_schiffels at mac.com> wrote:
>
>> For example, is there a way of instantiating an object 
>> normally (i.e. mutable), and then later "freeze" it to 
>> immutable via a simple cast or so?
>
> In std.exception there is assumeUnique. It's basically just a 
> cast, but
> might be good enough for you.

Is there any other recourse here?

Why does making `this(...) immutable` fix things below?
Shouldn't that immutable designation mean no members of this will 
be modified? But that is the whole point of an initializer? Why 
does immutable make sense in this context at all?

My problem is a bit more elaborate and unfortunately to 
initialize members I need to call standard functions that have 
not been made pure (but should be).



struct T {
   int[] i;
}

struct S {
   int[] i;
   immutable T t;
   this(immutable T _t) {
     t = _t;
   }
}

void main() {
   auto t = immutable T();
   auto s = immutable S(t);
}


More information about the Digitalmars-d-learn mailing list