Remix.run Logo
rurban 12 hours ago

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 12 hours ago | parent | next [-]

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

vouwfietsman 11 hours ago | parent [-]

std::offer

HarHarVeryFunny 8 hours ago | parent | next [-]

std::abandon() ?!

repelsteeltje 10 hours ago | parent | prev | next [-]

∆ That's actually quite accurate. I like it!

spot5010 9 hours ago | parent | prev [-]

Maybe a std::take to pair with it?

pseidemann 8 hours ago | parent | prev | next [-]

There is no giving (or taking).

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

usrnm 8 hours ago | parent | prev | next [-]

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 5 hours ago | parent [-]

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.

jsphweid 7 hours ago | parent | prev [-]

std::movable