Hi,<div><br></div><div>I'm a beginner in D; I have just begun the book from Andrei.</div><div><br></div><div>I would like to know how to statically declare an associative array whose key are enums.</div><div><br></div>

<div>example : </div><div><div>#!../dmd2/linux/bin/rdmd</div><div><br></div><div>import std.stdio, std.string;</div><div><br></div><div>enum deviceType {cpu, gpu}</div></div><div>auto execDeviceSuffix = [deviceType.cpu:".cpu", deviceType.gpu:".gpu"];</div>

<div><br></div><div>void main(){</div><div>  foreach(deviceSuffix; execDeviceSuffix.values) writeln(deviceSuffix);</div><div>}</div><div><br></div><div><br></div><div>This won't compile and give the error:</div><div>
Error: non-constant expression [cast(deviceType)0:".cpu",cast(deviceType)1:".gpu"]</div>
<div><br></div><div>I have two questions : </div><div>1) Why are there casts in the error message ?</div><div>Are the enums always substituted by with their base type ?</div><div><br></div><div>2) where is the non constant part in this expression ?</div>

<div>Both the deviceType enum and the strings are constant.</div><div><br></div><div>Thank you for your help !</div><div><br></div><div>-----<br>Cordialement,<br>Wilfried Kirschenmann<br><br>"An expert is a person who has made all the mistakes that can be made in a very narrow field."<b><br>

</b>Niels Bohr - <i>Danish physicist (1885 - 1962)</i><br>
</div>