Comment by rurban

Comment by rurban 18 hours ago

9 replies

Should have be called give(). But naming things correctly is hard, and the C++ committee is known to do a lot of things incorrectly

masklinn 17 hours ago

That has about the same issue: like std::move it doesn't really explain that the receiver decides.

pseidemann 13 hours ago

There is no giving (or taking).

I think std::rvalue would be the least confusing name.

usrnm 13 hours ago

The name predates the standardisation. The committee did not come with the whole thing themselves, rather they adopted and expanded already existing library implementations. You could move in C++, with this exact name, long before C++11.

See, for example, this implementation https://stlab.adobe.com/group__move__related.html

  • tialaramex 10 hours ago

    Howard Hinnant's original move proposal for C++ is from 2002. And by then even the destructive move (the more useful operation and the semantic provided in Rust) was well understood.

    Hinnant said they couldn't find a way to do destructive move and have the C++ inheritance hierarchy. To me it's obvious what loses in this case, but to a C++ programmer at the turn of the century apparently C++ implementation inheritance ("OO programming") was seen as crucial so C++ 11 move semantics are basically what's described in that proposal.