On Thursday, 12 August 2021 at 11:54:22 UTC, Learner wrote:
On Thursday, 12 August 2021 at 10:10:17 UTC, rikki cattermole
wrote:
On 12/08/2021 9:36 PM, Learner wrote:
It seems that there is no easy way to transition from a
postblit to a copy constructor, no?
struct Foo {
this(ref Foo other) {
foreach(i, v; other.tupleof)
this.tupleof[i] = v;
}
@disable this(this);
}
This results to:
Generating an `inout` copy constructor for `struct A`
failed, therefore instances of it are uncopyable
Just add ```inout``` inside ```this(ref inout/*notice the inout*/
Foo other) inout/*notice the inout*/```
Example code:
```d
struct Foo {
this(ref inout Foo other) inout {
foreach(i, v; other.tupleof)
this.tupleof[i] = v;
}
@disable this(this);
int a;
float b;
double c;
}
void main(){
immutable Foo a;
const Foo c;
Foo b = a;//mutable b and immutable a
const Foo d = c;//const d and const c
Foo e = c;//mutable e and const c
immutable Foo f = b;//immutable f and mutable b
const Foo g = b;//const g and mutable b
}
```