http://d.puremagic.com/issues/show_bug.cgi?id=7603
--- Comment #6 from Maxim Fomin <[email protected]> 2012-10-05 09:41:09 PDT --- (In reply to comment #5) > (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. Agree here, but I was talking about that it is logically that those asserts should fail, rather than about accepting non-lvalue default arguments. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
