Thread overview |
---|
September 29, 2014 out parameter with default value | ||||
---|---|---|---|---|
| ||||
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 |
September 29, 2014 Re: out parameter with default value | ||||
---|---|---|---|---|
| ||||
Posted in reply to AsmMan | My question is why it doesn't works and if there's a workaround |
September 29, 2014 Re: out parameter with default value | ||||
---|---|---|---|---|
| ||||
Posted in reply to AsmMan | 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 you want, and use this as the default value. But this probably isn't what you look for, because you're most likely going to overwrite it, so the next time the function gets called, it will have a different value.
|
September 29, 2014 Re: out parameter with default value | ||||
---|---|---|---|---|
| ||||
Posted in reply to AsmMan Attachments: | On Mon, 29 Sep 2014 16:07:49 +0000 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. |
September 29, 2014 Re: out parameter with default value | ||||
---|---|---|---|---|
| ||||
Posted in reply to Marc Schütz | I had just forget out and ref are same as pointers... thanks guys |
September 30, 2014 Re: out parameter with default value | ||||
---|---|---|---|---|
| ||||
Posted in reply to AsmMan Attachments: | On Mon, 29 Sep 2014 20:22:41 +0000 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. ;-) |
Copyright © 1999-2021 by the D Language Foundation