array of delegates
Alex via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Apr 13 23:45:08 PDT 2016
On Thursday, 14 April 2016 at 05:54:38 UTC, David Skluzacek wrote:
> So, that message is a pretty cryptic, but the problem there is
> that map does its thing at runtime, but partial is a template
> and must be instantiated at compile time.
>
> Instead you can use std.meta.staticMap, by doing something like
> this:
>
> ----
>
> void main()
> {
> import std.stdio;
> import std.functional;
> import std.meta;
>
> AA aa = new AA();
> int delegate(int, Props) sg;
> sg = &aa.Foo;
>
> template partialSG(alias a)
> {
> alias partialSG = partial!(sg, a);
> }
>
> alias indarr = AliasSeq!(0, 1, 2, 3, 4);
> alias funs = staticMap!(partialSG, indarr);
>
> foreach (fun; funs)
> {
> writeln( fun(Props.p1) );
> writeln( fun(Props.p2) );
> }
> }
Ah, ok... so, it was my mistake due to runtime <-> compile time
templates. Thanks.
But, this would help, only if I know the total amount of my
elements at compile time. Say, the length of the indarr would be
known.
What if I don't have this information? In reality, this
information is already known for the constructors of my classes.
But it seems very strange to me, to let the user recompile the
program each time with some compiler flag in order to deliver
this parameter a step prior to this.
More information about the Digitalmars-d-learn
mailing list