Can you move a disabled this(this) struct in to a container type if it's an rvalue?

aliak something at something.com
Thu Dec 13 13:17:05 UTC 2018


On Thursday, 13 December 2018 at 12:08:22 UTC, Boris-Barboris 
wrote:
> On Thursday, 13 December 2018 at 09:51:42 UTC, aliak wrote:
>> [...]
>
>
> You can just move in container constructor:
>
>
> struct S {
>     @disable this(this);
>     this(int i) {}
> }
>
> struct Container(T) {
>     T value;
>     this(T value) {
>         import std.algorithm: move;
>         this.value = value.move;
>     }
> }
>
> void main() {
>     auto a = Container!S(S(3));
> }

Ah. Is there any case where you would not want to do that when 
you have a T value as parameter?

And, what if it's "this()(auto ref T value)"? Then moving could 
be dangerous if the parameter was passed as a ref. Or maybe it 
just wouldn't compile?


More information about the Digitalmars-d-learn mailing list