Map one tuple to another Tuple of different type

Daniel Gibson via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jul 20 18:42:58 PDT 2014


Am 21.07.2014 03:34, schrieb Vlad Levenfeld:
>
> You're very welcome. The reason foreach(int i, x; argTuple) failed is
> because argTuple is a value (of type T), and so known only at run-time.

Hmm but the only thing the compiler would need to know at compile-time 
is still i, which only depends on argTuple.length which is known at 
compile-time.

But ok, I can kinda understand that this doesn't work, probably foreach 
either operates completely on compile-time stuff (and does so 
statically) or completely on runtime-stuff, done dynamically.

> To get a foreach to run at compile-time, you have to give it something
> whose value is known to the compiler (so, T and typeof(argTuple) would
> suffice, and 0..T.length really should as well).

Yup

>
> A nice way to test is "pragma(msg, Foo)" where Foo is your argument...
> if its knowable at compile-time, then your compiler should output "Foo"
> (or the name of whatever its aliasing) to the console.

Thanks for the advice!

Cheers,
Daniel


More information about the Digitalmars-d-learn mailing list