Metaprogramming, generate argument list.
ciechowoj via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Aug 23 14:14:01 PDT 2016
On Tuesday, 23 August 2016 at 07:17:16 UTC, Jack Applegame wrote:
> This is impossible since pointers to local variables are
> unknown at compile time.
This is a bit strange, as the local variables aren't known either
and they seem to work. I do not want to get the address, rather
an alias to `&variable` expression.
> But you can generate arguments list that contains functions
> that return pointers at run-time:
>
> template Repeat(int N, alias variable) {
> auto ptr() @property { return &variable; }
> import std.meta : AliasSeq;
> static if(N == 1) alias Repeat = ptr;
> else alias Repeat = AliasSeq!(ptr, Repeat!(N-1, variable));
> }
>
> void foo(int* x, int* y, int* z) {
> }
>
> void main() {
> int bar = 42;
> foo(Repeat!(3, bar));
> }
Anyway, this solution works perfectly fine, thanks.
More information about the Digitalmars-d-learn
mailing list