Thread overview | ||||||
---|---|---|---|---|---|---|
|
December 09, 2015 Reason for 'static struct' | ||||
---|---|---|---|---|
| ||||
There is a fair bit of range related code in the standard library structured like: auto MyRange(Range)(Range r) if (isInputRange!Range) { static struct Result { private Range source; // define empty, front, popFront, etc } return Result(r); } I'm curious about what declaring the Result struct as 'static' does, and if there are use cases where it be better to exclude the static qualifier. --Jon |
December 09, 2015 Re: Reason for 'static struct' | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jon D | V Wed, 09 Dec 2015 21:10:43 +0000 Jon D via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> napsáno: > There is a fair bit of range related code in the standard library structured like: > > auto MyRange(Range)(Range r) > if (isInputRange!Range) > { > static struct Result > { > private Range source; > // define empty, front, popFront, etc > } > return Result(r); > } > > I'm curious about what declaring the Result struct as 'static' does, and if there are use cases where it be better to exclude the static qualifier. > > --Jon It make it non-nested struct: https://dlang.org/spec/struct.html#nested |
December 09, 2015 Re: Reason for 'static struct' | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozák | On Wednesday, 9 December 2015 at 21:23:03 UTC, Daniel Kozák wrote:
> V Wed, 09 Dec 2015 21:10:43 +0000
> Jon D via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com>
> napsáno:
>
>> There is a fair bit of range related code in the standard library structured like:
>>
>> auto MyRange(Range)(Range r)
>> if (isInputRange!Range)
>> {
>> static struct Result
>> {
>> private Range source;
>> // define empty, front, popFront, etc
>> }
>> return Result(r);
>> }
>>
>> I'm curious about what declaring the Result struct as 'static' does, and if there are use cases where it be better to exclude the static qualifier.
>>
>> --Jon
>
> It make it non-nested struct: https://dlang.org/spec/struct.html#nested
Thanks. So, is in the example above, would the advantage be that 'static' avoids saving the enclosing state, which is not needed?
|
December 10, 2015 Re: Reason for 'static struct' | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jon D Attachments:
| Yes, exactly. Some people even use static if it is not needed because it is harmless. And remove it only when enclosing context is demand. Dne 9. 12. 2015 22:40 napsal uživatel "Jon D via Digitalmars-d-learn" < digitalmars-d-learn@puremagic.com>: > On Wednesday, 9 December 2015 at 21:23:03 UTC, Daniel Kozák wrote: > >> V Wed, 09 Dec 2015 21:10:43 +0000 >> Jon D via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> >> napsáno: >> >> There is a fair bit of range related code in the standard library >>> structured like: >>> >>> auto MyRange(Range)(Range r) >>> if (isInputRange!Range) >>> { >>> static struct Result >>> { >>> private Range source; >>> // define empty, front, popFront, etc >>> } >>> return Result(r); >>> } >>> >>> I'm curious about what declaring the Result struct as 'static' does, and if there are use cases where it be better to exclude the static qualifier. >>> >>> --Jon >>> >> >> It make it non-nested struct: https://dlang.org/spec/struct.html#nested >> > > Thanks. So, is in the example above, would the advantage be that 'static' avoids saving the enclosing state, which is not needed? > |
Copyright © 1999-2021 by the D Language Foundation