On Friday, 16 August 2019 at 08:07:28 UTC, aliak wrote:
Hi, I'm trying to fix a use-case where you have a wrapper
template type (it's an optional) and the wrapping type has
@disable this(this). And having this scenario work:
struct S {
@disable this(this);
}
Optional!S fun() {...}
Optional!S a;
a = fun.move;
Now that won't work because of the disabled copy
Are you sure? I tried to reproduce the error you're describing,
and I couldn't do it. The following compiles and runs without any
issues:
struct Wrapper(T) { T value; }
struct NoCopy { @disable this(this); }
Wrapper!NoCopy fun()
{
return Wrapper!NoCopy();
}
void main()
{
Wrapper!NoCopy a;
a = fun(); // already an rvalue, so moved implicitly
}
Can you give a more complete example of the problem you're having?