About default parameters in variadic templates
Don Clugston
dac at nospam.com
Mon Sep 17 23:45:45 PDT 2012
On 17/09/12 14:42, Andrej Mitrovic wrote:
> Related: http://d.puremagic.com/issues/show_bug.cgi?id=8676
> A lot of code could be stripped if there was a way to set an optional
> last parameter for variadics. lockstep could then be written as:
>
> auto newLockstep(Args...)(Args args, StoppingPolicy stoppingPolicy =
> StoppingPolicy.shortest)
> if (allSatisfy!(isInputRange, staticMap!(Unqual, Args)))
> {
> static if (Args.length > 1)
> {
> return Lockstep!(Args)(args, stoppingPolicy);
> }
> else
> {
> return args[0];
> }
> }
> but if you don't specify the last StoppingPolicy argument at the call
> site it won't compile:
>
> foreach (x, y; newLockstep(arr1, arr2)) { }
>
> test.d(32): Error: template test.newLockstep does not match any
> function template declaration
> test.d(14): Error: template test.newLockstep(Args...) if
> (allSatisfy!(isInputRange,staticMap!(Unqual,Args))) cannot deduce
> template function from argument types !()(int[],int[])
That just looks like a bug to me. Please enter it in Bugzilla.
More information about the Digitalmars-d
mailing list