www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - How do you copy a const struct to a mutable?

reply "Malte Skarupke" <malteskarupke web.de> writes:
I want to get this to compile:

void main()
{
     struct A
     {
         this(int x) { this.x = x; }
         int x;
     }
     const(A) a = A(5);
     A b = a;
}

It should clearly be legal to create a non-const copy of the 
struct. What am I missing in order to do this?

Cheers,

Malte
Oct 31 2012
parent "bearophile" <bearophileHUGS lycos.com> writes:
Malte Skarupke:

 What am I missing in order to do this?

In D when you define a struct inside a function, it's not a POD any more. If you define it as "static struct A" instead of "struct A", your code will compile. Unfortunately DMD gives a too much generic error message in this case, it doesn't explain what's the problem: test.d(7): Error: cannot implicitly convert expression (a) of type const(A) to A Bye, bearophile
Oct 31 2012