Hey, so I'm trying to make an variant array of objects (each one
has an opCall defined) and then call each of them in succession.
It doesn't seem to be working. The error I get is:
"Cannot apply `()' to a value of type `Command!(__lambda1, int)".
I think it's failing when it checks for "!isFunctionPointer!A &&
!isDelegate!A".
Here's the bit of code:
struct Command(alias fun, Args...) {
Args args;
this(Args args) {
args = args;
}
auto opCall() {
return fun(args);
}
}
auto command(alias fun, Args...)(Args args) {
return Command!(fun, Args)(args);
}
void main() {
auto commands = variantArray(
command!(a => a + 1)(1),
command!(a => a + 2)(1),
command!(a => a + 3)(1),
);
// commands.each!(a => a()); // <-- crashes runtime
typeid(commands[0]).writeln; //
std.variant.VariantN!32LU.VariantN
auto cmd = command!(a => a + 1)(1);
typeid(cmd).writeln; // scratchpad.main.Command!(__lambda4,
int).Command
}
Is there a way to do what I'm trying to do?
Cheers!