I think this is a bug of iota() (or a problem in core.memory.GC.malloc): import std.range: iota; import std.array: array; void main() { auto a = array(iota(1L)); } DMD gives: ...\std\array.d(243): Error: function core.memory.GC.malloc (uint sz, uint ba = cast(uint)0) is not callable using argument types (ulong,BlkAttr) ...\std\array.d(243): Error: cannot implicitly convert expression (_param_0 * 8LU) of type ulong to uint ...\std\array.d(231): Error: cannot implicitly convert expression (_param_0) of type ulong to uint ...\std\array.d(194): Error: template instance std.array.arrayAllocImpl!(false,long[],ulong) error instantiating ...\std\array.d(42): instantiated from here: uninitializedArray!(long[],ulong) test.d(4): instantiated from here: array!(Result) ...\std\array.d(42): Error: template instance std.array.uninitializedArray!(long[],ulong) error instantiating test.d(4): instantiated from here: array!(Result) test.d(4): Error: template instance std.array.array!(Result) error instantiating
It compiles just fine with the latest master. I believe that that iota was taking a size_t before, which then didn't work with long on 32-bit systems. It was fixed in https://github.com/D-Programming-Language/phobos/commit/d08f0e6621e1ceb1d8a4cded975507f775c8857e I think that there was a bugzilla entry that went with it, but it's not in the changelog, so I don't know what it was.
I have just compiled the latest DMD, druntime and Phobos, and I see some errors still. Maybe it's my fault, I don't know.
This still doesn't compile on 2.059 Win32
Works on git HEAD (2.067a) on Linux/64.
Unable to reproduce on git HEAD, Linux/64. Does this bug still happen? Can anyone else try to reproduce it (on Windows)?
(In reply to hsteoh from comment #5) > Unable to reproduce on git HEAD, Linux/64. Does this bug still happen? Can > anyone else try to reproduce it (on Windows)? On Windows32 now this gives: void main() { import std.range: iota; import std.array: array; auto a = 1L.iota.array; } ...\dmd2\src\phobos\std\array.d(47,43): Error: function std.array.array!(Result).array.trustedAllocateArray (uint n) is not callable using argument types (ulong) test.d(4,21): Error: template instance std.array.array!(Result) error instantiating
I just compiled and ran the exmample successfully with the latest dmd, druntime, phobos on linux 64-bit and with wine for windows 32 bit. Closing as WORKSFORME.