const AB c = {a,20, numbers};

Timon Gehr timon.gehr at gmx.ch
Mon Apr 16 13:54:40 PDT 2012


On 04/16/2012 06:49 PM, bearophile wrote:
> sclytrack:
>
...
>>
>> Shouldn't the code above accept the const(int [])   ?
>

I think it is a bug that it does not.

> I think you are asking too much to the poor type system. You are giving
> a const dynamic array (that's not a value) to assign it to a mutable
> variable, and then you want to assign the result to a const value. The
> type system is not able to perform those jumps.
>

What he is asking for are initializer list struct literals for qualified 
struct types.

> But this seems to work:
>
> struct AB {
>      int a, b;
>      int [] numbers;
> }
> void main() {
>      import std.stdio;
>      int a = 300;
>      const numbers = new int[2];
>      const c = const(AB)(a, 20, numbers);
>      writeln(c);
> }
>
> Bye,
> bearophile

auto c = AB(a, 20, numbers)         <=>   AB c = {a, 20, numbers};

auto c = const(AB)(a, 20, numbers)  <=>   const AB c = {a, 20, numbers};


More information about the Digitalmars-d-learn mailing list