Thread overview |
---|
August 16, 2017 struct field initialization | ||||
---|---|---|---|---|
| ||||
If I define a non-default constructor for a struct, are the fields initialized to T.init by the time it's called? or am I responsible for initializing all fields in that constructor? ..or do structs follow the same rules as classes? https://dlang.org/spec/class.html#field-init Thanks |
August 16, 2017 Re: struct field initialization | ||||
---|---|---|---|---|
| ||||
Posted in reply to bitwise | On Wednesday, 16 August 2017 at 18:11:05 UTC, bitwise wrote:
> If I define a non-default constructor for a struct, are the fields initialized to T.init by the time it's called?
The struct instance is initialized with T.init before invoking the constructor.
|
August 16, 2017 Re: struct field initialization | ||||
---|---|---|---|---|
| ||||
Posted in reply to bitwise | On Wednesday, 16 August 2017 at 18:11:05 UTC, bitwise wrote: > [...] I'm asking this because I need to forward args to a container's node's value. Something like this: struct Node(T) { int flags; T value; // maybe const this(Args...)(int flags, auto ref Args args) { this.flags = flags; // this? emplace(&value, args); // or this? value = T(args); // ? } } struct Container(T) { Node!T[] nodes; void add(Args...)(auto ref Args args) { int flags = 1234; auto p = cast(Node!T*)malloc(Node!T.sizeof); nodes ~= emplace(p, flags, args); } } |
August 16, 2017 Re: struct field initialization | ||||
---|---|---|---|---|
| ||||
Posted in reply to kinke | On Wednesday, 16 August 2017 at 18:17:36 UTC, kinke wrote:
> On Wednesday, 16 August 2017 at 18:11:05 UTC, bitwise wrote:
>> If I define a non-default constructor for a struct, are the fields initialized to T.init by the time it's called?
>
> The struct instance is initialized with T.init before invoking the constructor.
Thanks for the quick response.
In regards to my second question, the "value = T(args);" variant seems to work, even with a const T, without calling a postblit - so I guess that's what I'll use.
|
Copyright © 1999-2021 by the D Language Foundation