Can you move a disabled this(this) struct in to a container type if it's an rvalue?
Paul Backus
snarwin at gmail.com
Thu Dec 13 17:34:34 UTC 2018
On Thursday, 13 December 2018 at 13:17:05 UTC, aliak wrote:
>
> 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?
Here's a version that moves rvalues and either copies lvalues, or
fails to compile if it can't:
struct Container(T) {
T value;
this(T value) {
import std.algorithm.mutation : move;
this.value = move(value);
}
import std.traits : isCopyable;
static if (isCopyable!T) {
this(ref T value) {
this.value = value;
}
}
}
Full example: https://run.dlang.io/is/0dw6zz
More information about the Digitalmars-d-learn
mailing list