| ▲ | dzdt 10 days ago | |||||||
[Edited] For anyone like me stuck on his language: the phrase "move from" should be understood as a technical term loosely related to the English language meaning of the words. I think the post would be better if he explained this terminology; as it is you have to know an awful lot about the topic he is writing about to even parse what he is saying. There is a pretty good stack overflow post that quuxplusone linked below. How they explain it: | ||||||||
| ▲ | quuxplusone 8 days ago | parent | next [-] | |||||||
"Move" in the sense of https://stackoverflow.com/questions/3106110/what-is-move-sem... Now, if you don't know what "move semantics" is, then "lvalues can't be moved from" isn't terribly helpful, and if you do then it's tautological, so I'm not saying you're wrong to criticize. :) But in a C++ context, "move" does have a single specific meaning — the one he's using properly if opaquely-to-non-C++ers. | ||||||||
| ▲ | cjensen 3 days ago | parent | prev | next [-] | |||||||
He has a good article on that at [1] But here's the gist: sometimes you have an object you want to copy, but then abandon the original. Maybe it's to return an object from a function. Maybe it's to insert the object into a larger structure. In these cases, copying can be expensive and it would be nice if you could just "raid" the original object to steal bits of it and construct the "copy" out of the raided bits. C++11 enabled this with rvalue references, std::move, and rvalue reference constructors. This added a lot of "what the hell is this" to C++ code and a lot of new mental-model stuff to track for programmers. I understand why it was all added, but I have deep misgivings about the added complexity. [1] https://blog.knatten.org/2018/03/09/lvalues-rvalues-glvalues... | ||||||||
| ||||||||
| ▲ | aidenn0 3 days ago | parent | prev | next [-] | |||||||
Presumably, if you already (mistakenly) believe that a prvalue is a temporary, then you probably have at least a vague idea of C++ move semantics. If you don't already believe that then you are probably not the audience for the article. | ||||||||
| ▲ | Conscat 3 days ago | parent | prev [-] | |||||||
"move" means to pass into an r-value reference function parameter, for instance a move constructor, move assignment operator, or forwarding reference. | ||||||||