[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