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