On Thursday, 12 August 2021 at 12:28:32 UTC, Learner wrote:
On Thursday, 12 August 2021 at 12:22:22 UTC, Tejas wrote:
On Thursday, 12 August 2021 at 12:19:56 UTC, Tejas wrote:
[...]

Works with ```@safe``` as well

Paul was just trying to make that other answer work, you don't have to make copy constructors ```@trusted```

Operations are needed on `other` data, that was the reason for a `postblit` in the original case: an `int[]` data array needs to be duplicated.

Hey, this should be good enough now:
```d
import std;
struct Foo {
        this(ref inout Foo other) /*inout*/ @safe{
                /*foreach(i, v; other.tupleof)
                        this.tupleof[i] = cast(typeof(this.tupleof[i]))v;*/
        a = other.a;
        b = other.b;
        foreach(i, elem ;other.c)
            c[i] = elem;

        }

        @disable this(this);
    int a;
    float b;
    double[] c;
 }

void main()@safe{
    immutable Foo a;
    const Foo c;
    Foo b = a;//mutable b from immutable a
    //writeln(typeof(b).stringof);  //Output is Foo
    const Foo d = c;//const d from const c
    Foo e = c;//mutable e from const c
//immutable Foo f = b;//immutable f from mutable b I don't know why this fails but const from mutable succeeds
    const Foo g = b;//const g from mutable b
}
```

Reply via email to