<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, 12 Oct 2024, 11:00 Walter Bright via Digitalmars-d, <<a href="mailto:digitalmars-d@puremagic.com">digitalmars-d@puremagic.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 10/11/2024 12:06 AM, Manu wrote:<br>
> But, I think you actually missed my point here; I provided a ref and non-ref <br>
> overload for Other... how do I move-construct from some OTHER type?<br>
<br>
I'm not sure moving a T to an S even makes sense.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Absolutely does, and it's essential.</div><div dir="auto">Super common and super useful.</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
But writing a function to convert an S to a T, and then set the S to its default <br>
initializer, should work.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Both perspectives are valid, the distinction might regard whether S knows that T exists or vice versa. In my experience, the arrangement where you construct something from some 'upstream' thing is the far more common case.</div><div dir="auto"><br></div><div dir="auto">Or, it might just work out that an API is much more ergonomic one way or the other. </div><div dir="auto"><br></div><div dir="auto">It doesn't matter though, your rvalue design handles this naturally... it shouldn't require a single special line of code in the compiler... that's one of the things that's so compelling about it!</div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div></div>