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]