I do not understand copy constructors

Tejas notrealemail at gmail.com
Thu Aug 12 12:22:22 UTC 2021


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


More information about the Digitalmars-d-learn mailing list