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```

Reply via email to