[Issue 22091] Unexpected behaviour with variadic template param followed by default parameter
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Jun 29 10:01:22 UTC 2021
https://issues.dlang.org/show_bug.cgi?id=22091
--- Comment #3 from Max Samukha <maxsamukha at gmail.com> ---
Just for kicks, this seems to simulate the expected behavior:
import std;
void variadic2(Args...)(Args args)
{
static if (Args.length && is(Args[$ - 1]: int)) {
alias anotherArg = args[$ - 1];
alias _args = args[0..$ - 1];
} else {
int anotherArg = 5;
alias _args = args;
}
writefln("variadic2 - Args len is %s, anotherArg is %s", _args.length,
anotherArg);
}
void main()
{
variadic2();
variadic2(4);
variadic2(2, "foo");
variadic2(2, 3);
}
variadic2 - Args len is 0, anotherArg is 5
variadic2 - Args len is 0, anotherArg is 4
variadic2 - Args len is 2, anotherArg is 5
variadic2 - Args len is 1, anotherArg is 3
--
More information about the Digitalmars-d-bugs
mailing list