Re: Initialise non-copyable, non-default-constrauctable member struct

2018-07-27 Thread Peter Particle via Digitalmars-d-learn

On Friday, 27 July 2018 at 13:06:10 UTC, aliak wrote:

On Friday, 27 July 2018 at 13:05:07 UTC, aliak wrote:

https://run.dlang.io/is/lLrUiq


Sorry: https://run.dlang.io/is/20FUoj


Thanks, you are right, but it seems that I have reduced my issue 
too much, as it still does not work with my actual case. I will 
try to properly reduce my code to present my issue. I think that 
the simple example can be fully figured out statically, but my 
case not.


Re: Initialise non-copyable, non-default-constrauctable member struct

2018-07-27 Thread aliak via Digitalmars-d-learn

On Friday, 27 July 2018 at 13:05:07 UTC, aliak wrote:

https://run.dlang.io/is/lLrUiq


Sorry: https://run.dlang.io/is/20FUoj



Re: Initialise non-copyable, non-default-constrauctable member struct

2018-07-27 Thread aliak via Digitalmars-d-learn

On Friday, 27 July 2018 at 12:11:37 UTC, Peter Particle wrote:

Question is related to this:
https://dlang.org/spec/struct.html#disable_default_construction

struct S {
int x;
@disable this(); // Disables default construction
@disable this(this); // Disable copying

this(int v) { x = v; }
}

struct T {
float y;
S s;
@disable this(); // Disables default construction
@disable this(this); // Disable copying

this(float v) {
y = v;

s = S(cast(int)v);// tried option 1
s.__ctor(cast(int)v); // tried option 2

}
}

Error: struct `S` is not copyable because it is annotated with 
`@disable`

in both cases.

Is there some way around this problem?


This works on the latest dmd:

struct S {
int x;
@disable this(); // Disables default construction
@disable this(this); // Disable copying

this(int v) { x = v; }
}

struct T {
float y;
S s;
@disable this(); // Disables default construction
@disable this(this); // Disable copying

this(float v) {
y = v;
s = S(cast(int)v);
}
}

void main() {
auto s = T(3);
}

https://run.dlang.io/is/lLrUiq


Initialise non-copyable, non-default-constrauctable member struct

2018-07-27 Thread Peter Particle via Digitalmars-d-learn

Question is related to this:
https://dlang.org/spec/struct.html#disable_default_construction

struct S {
int x;
@disable this(); // Disables default construction
@disable this(this); // Disable copying

this(int v) { x = v; }
}

struct T {
float y;
S s;
@disable this(); // Disables default construction
@disable this(this); // Disable copying

this(float v) {
y = v;

s = S(cast(int)v);// tried option 1
s.__ctor(cast(int)v); // tried option 2

}
}

Error: struct `S` is not copyable because it is annotated with 
`@disable`

in both cases.

Is there some way around this problem?