Scripting with Variant from std.variant: parameter passing
Carl Sturtivant
sturtivant at gmail.com
Fri Feb 2 20:28:50 UTC 2024
On Friday, 2 February 2024 at 19:22:22 UTC, Steven Schveighoffer
wrote:
> ```d
> void foo(Variant x, Variant y) { ... }
>
> import std.meta : allSatisfy;
>
> enum isVariant(T) = is(T == Variant);
>
> // this is going to suck at CTFE but...
> string argsAsVariants(size_t count)
> {
> import std.format;
> import std.range;
> import std.alglorithm;
> import std.array;
> return iota(count).map!(i => format("Variant(args[%s])",
> i).join(",");
> }
>
> // shim
> auto foo(Args...)(Args args) if (!allSatisfy!(isVariant, Args))
> {
> mixin("return foo(", argsAsVariants(args.length), ");");
> }
> ```
Thanks for this idea. I'll work on it.
>
> -Steve
More information about the Digitalmars-d-learn
mailing list