out parameter with default value

2014-09-29 Thread AsmMan via Digitalmars-d-learn
Why it does works: void f(out int c) { if(some_cond) c = 10; } but it doesn't? void f(out int c = 1) { if(some_cond) c = 10; } it give compiler error: Error: constant 1 is not an lvalue

Re: out parameter with default value

2014-09-29 Thread AsmMan via Digitalmars-d-learn
My question is why it doesn't works and if there's a workaround

Re: out parameter with default value

2014-09-29 Thread via Digitalmars-d-learn
On Monday, 29 September 2014 at 16:09:11 UTC, AsmMan wrote: My question is why it doesn't works and if there's a workaround For the same reason `ref` wouldn't work in this place: It doesn't accept rvalues. A workaround might be to create a global variable that is initialized to the value

Re: out parameter with default value

2014-09-29 Thread ketmar via Digitalmars-d-learn
On Mon, 29 Sep 2014 16:07:49 + AsmMan via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote: but it doesn't? void f(out int c = 1) 'cause `out int c` is actually `int* c`. you can't assign int(1) to pointer. signature.asc Description: PGP signature

Re: out parameter with default value

2014-09-29 Thread AsmMan via Digitalmars-d-learn
I had just forget out and ref are same as pointers... thanks guys

Re: out parameter with default value

2014-09-29 Thread ketmar via Digitalmars-d-learn
On Mon, 29 Sep 2014 20:22:41 + AsmMan via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote: I had just forget out and ref are same as pointers... thanks guys yeah, that syntactic sugar can be confusing sometimes. ;-) signature.asc Description: PGP signature