digitalmars.D - typesafe variadic with default args
- Steven Schveighoffer (28/28) Jun 04 2015 https://issues.dlang.org/show_bug.cgi?id=14651
https://issues.dlang.org/show_bug.cgi?id=14651 This doesn't make a whole lot of sense: void foo(int arg1 = 0, int[] arg2...) { } Error: default argument expected for arg2 The default argument is nothing, like normal, no? I'll note that non-typesafe variadic works. In any case, there is something that *does* work, but it's hideous, and doesn't seem to be supported by the grammar: void foo(int arg1 = 0, int[] arg2 = null...) Questions: 1. why is original not accepted? This seems like a no-brainer rejects-valid. 2. What is the second one? Is it accepts-invalid, or just not properly documented? 3. If 2 is accepts-invalid, will we break code by disabling it? Is it worth disabling? A bizarre consequence of the accepted version is you could have a default argument that's larger than a specified argument: void foo(int[] arg = [1,2,3]...) { } void main() { foo(); // equivalent to foo(1,2,3) foo(1); // less args than foo() ! } -Steve
Jun 04 2015