== Quote from Rory Mcguire (rjmcgu...@gm_no_ail.com)'s article
> Jason Spencer wrote:

> > I nievely went and replaced "foreach (t; Iota!(str_types.length))"
> > with "foreach (t; str_types.length)", since the length of that
> > array is known at compile-time.

> your replacement tries to loop over an uint called str_types.length.
> Never gonna happen.
> Iota!(str_types.length) seems to generate str_types.length(a number
> of)integer indexes. Can't use 0 .. str_types.length in the foreach
> because compiler is expecting Integer constants so it can make the
> template "foo" into actual code.

Not quite sure I follow.  I think you're saying the range in foreach
has to be actual literals, and not just an expression that can be
evaluated at compile time to generate the same range...close?

If that's the case, then why does it work to instantiate Iota! with
str_types.length?  It can obviously get the value behind it at compile
time.  I'm still missing something.

Jason

Reply via email to