On 2011-06-04 18:01, Andrej Mitrovic wrote: > Problem not so much solved. > > What if I want to keep a stride range? There's no Stride struct > defined in std.range, stride() is defined as an auto function and > hides the type inside the function itself. > > How I can store such an object in module scope? This won't work: > > auto var = stride([1, 2, 3], 2); > > This prints out a couple of hundred lines of text as an error message > followed by "not implemented yet in CTFE".
The problem here is likely because var _must_ be known at compile time when you initialize it directly, and stride apparently doesn't work with CTFE. I believe that it's the case that _most_ range-based functions don't work with CTFE yet. So, you'll need to initialize it in a module constructor. So, to get the type, you'll probably need to do something like typeof(stride([1, 2, 3], 2)) var; - Jonathan M Davis