Another interesting hack: expand a static array into parameter arguments
Artur Skawina
art.08.09 at gmail.com
Wed Apr 2 14:53:44 PDT 2014
On 04/02/14 21:46, Andrej Mitrovic wrote:
> auto Delay(alias arg, size_t idx)() { return arg[idx]; }
>
> template expand(alias array, size_t idx = 0)
> if (isStaticArray!(typeof(array)))
> {
> alias Array = typeof(array);
>
> static if (idx + 1 < Array.length)
> alias expand = TypeTuple!(Delay!(array, idx),
> expand!(array, idx + 1));
> else
> alias expand = Delay!(array, idx);
> }
template expand(alias A, alias M=Delay) {
mixin(q{alias expand = TypeTuple!(}
~ iota(A.length).map!q{",M!(A,"[!a..$]~text(a)~")"}().join()
~ q{);});
}
SCNR.
artur
More information about the Digitalmars-d
mailing list