On Monday, 11 November 2013 at 11:39:06 UTC, Daniel Murphy wrote:
"Manu" <turkey...@gmail.com> wrote in message
news:mailman.355.1384158631.9546.digitalmar...@puremagic.com...
immutable string[string] priorityMap = [
"1" : "blocker",
"2" : "critical",
"3" : "critical",
"4" : "major",
"5" : "major",
"6" : "major",
"7" : "minor",
"8" : "minor",
"9" : "trivial" ];

main.d(56): Error: non-constant expression ["1":"blocker", "2":"critical", "3":"critical", "4":"major", "5":"major", "6":"major", "7":"minor",
"8":"minor", "9":"trivial"]

This is tedious, how long has it been now?
Seriously, static map's are super-important, they should be able to be made
immutable, and also be able to be initialised.

Maybe this could be factored into the improvements for 2.065?


I think yes, it can be done for 2.065. Someone remind me if we get close
and it isn't done yet.


IIRC the poor performance of array literals and AA literals is because they're not always literals, sometimes they are variables (!) and the compiler assumes the worst case. You are allowed to write:

void foo(int some_param)
{
    immutable string[int] = [ 1: "abc", some_param: "def"];
}

I wish we could get rid of that silliness entirely.


If the members are compile-time expressions, you probably want to mark the variable as static const/static immutable.

Reply via email to