On Tue, 23 Dec 2008 00:07:08 -0800, Janderson wrote: > Moritz Warning wrote: >> On Tue, 16 Dec 2008 19:54:11 +0000, BCS wrote: >> >>> Reply to Moritz, >>> >>>> Hi, >>>> >>>> I have problems to convert a char[4] to an uint at compile time. All >>>> variations (I've tried) of using an enum crashes dmd: >>>> >>>> union pp { char[4] str; uint num; } >>>> const uint x = pp("abcd").num >>>> This does also doesn't work: >>>> >>>> const uint x = cast(uint) x"aa aa aa aa"; >>>> >>>> Any ideas? >>>> >>>> >>> template Go (char[4] arg) >>> { >>> const uint Go = (arg[0] << 24) | (arg[1] << 16) | (arg[2] << 8) | >>> arg[3]; >>> } >>> >>> import std.stdio; >>> void main() >>> { >>> writef("%x\n", Go!("Good")); >>> } >> >> Thanks! >> That workaround should do it. >> >> Maybe it will be possible to just do cast(uint) "abcd" in the future. >> :> > > That would only cast the pointer. It should be something like : > cast(uint)(*"abcs") or *cast(uint*) "abcs". > > -Joel
I like to see "abcd" being a value type like a decimal or hex value. A cast(uint) would be possible and nice in that case.