On 1/27/11, Steven Schveighoffer <schvei...@yahoo.com> wrote: > I'm not sure why this works and the other doesn't, but we > definitely need something that allows one to control the array type of a > literal.
pragma helps in discovering what DMD does sometime. This will error out but it will give some useful info: pragma(msg, typeid( [1,2,cast(ubyte)3] )); error: [1,2,cast(int)cast(ubyte)3] , &D11TypeInfo_Ai6__initZ So it forces a cast back to int again. But we can use a postfix to set an unsigned type for the whole array: writeln(typeid( [1,2,3u] )); // uint[] And we can select a string type with a postfix, but we can't use a cast: void main() { writeln(typeid( ["a"d, "b", "c"] )); // works writeln(typeid( [cast(dchar)"a", "b", "c"] )); // doesn't work, // Error: incompatible types for ((cast(dchar)"a") ? ("b")): 'dchar' and 'string' }