https://issues.dlang.org/show_bug.cgi?id=22091
--- Comment #3 from Max Samukha <[email protected]> --- 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 --
