How to make a global immutable associative array?

Rikki Cattermole alphaglosined at gmail.com
Wed Mar 19 02:50:00 PDT 2014


On Wednesday, 19 March 2014 at 09:12:53 UTC, Dicebot wrote:
> On Wednesday, 19 March 2014 at 02:52:23 UTC, bearophile wrote:
>> Rikki Cattermole:
>>
>>> Is an enum not appropriate? Because it can be used to push 
>>> constants and available at ctfe.
>>>
>>> enum int[int] aa = [1: 2, 3: 4];
>>> pragma(msg, aa);
>>
>> This is bad from an efficiency point of view. I think Don even 
>> suggested to disallow it.
>>
>> Bye,
>> bearophile
>
> It still only existing way to define compile-time usable AA 
> value, disallowing it without fixing alternatives is not an 
> option.

There might be another way depending on how good the compiler is 
at optimizing out pure functions.
Because in theory it'll only call it once (did test in this 
context). But I don't know how it handles it within memory.

@property pure int[int] test() {
	pragma(msg, "hit");
	return [1 : 2, 3 : 4];
}

pragma(msg, test);
pragma(msg, test);

hit
[1:2, 3:4]
[1:2, 3:4]


More information about the Digitalmars-d mailing list