On Thursday, 12 August 2021 at 12:19:56 UTC, Tejas wrote:
On Thursday, 12 August 2021 at 11:54:22 UTC, Learner wrote:
[...]
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
}
```
Works with ```@safe``` as well
Paul was just trying to make that other answer work, you don't
have to make copy constructors ```@trusted```