Tyro[a.c.edwards] wrote:
> Is it yet possible to statically initialize an associative array? If so,
> please point me to the documentation. I am using DMD v2.028.
> 
> Currently I'm able to do this:
> 
> import std.stdio;
> 
> string[string] types;
> static this(){
>     types = [ "void":"void", "bool":"bool" ];
> }
> 
> void main(){
>     writeln(types);
> }
> 
> Output = [void:void,bool:bool] which is exactly what I want.
> 
> However, removing static this() results in an error.
> 
> string[string] types = [ "void":"void", "bool":"bool" ];
> 
> Result:
> api.d(77): Error: non-constant expression ["void":"void","bool":"bool"]
> 
> How do I make the initialization constant?
> 
> Thanks,
> Andrew

I think Walter said something a while back to the effect that making it
possible to statically initialise AAs isn't feasible because it requires
setting up a complex structure on the heap.  The best you could do would
be to *pretend* to statically initialise them, and actually really
initialise them in a module ctor.

Which is exactly what you currently have to do.

Could be wrong; that's just what I remember from the last time this came up.

  -- Daniel

Reply via email to