http://d.puremagic.com/issues/show_bug.cgi?id=7603
--- Comment #5 from Andrej Mitrovic <[email protected]> 2012-10-05 09:30:41 PDT --- (In reply to comment #4) > Why wouldn't this fail? Default arguments are used if no argument is given. > Sine you provide arguments and functions don't modify them, arguments are not > changed. The only modification happens due to parameter storage class out. > > void test1(ref int val = 10) {} > void test2(out int val = 20) {} > void main() { > int x = 5; > test1(x); > assert(x == 5); > test2(x); > assert(x == 0); > } > > Passes both assertions as it should. Ignoring what bear's confusion here, the function declaration is invalid. Call test1() alone: void test1(ref int val = 10) { } void main() { test1(); // Error: constant 10 is not an lvalue } It makes no sense adding default arguments if they'll never compile, so this needs to be a CT error when the function is parsed and not when the function is called. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
