2 ms·
Maybe a compiler error that a const object cannot be “moved”? That would force the programmer to remove the std::move, making it clear that its a copy.
by spot5010 9mo ago
Maybe a compiler error that a const object cannot be “moved”?
That would force the programmer to remove the std::move, making it clear that its a copy.
- ziml77 9mo agoIt's weird that they made a mistake of allowing this after having so many years to learn from their mistake about copies already being non-obvious (by that I mean that references and copies look identical at the call sites)
- fluoridation 9mo agoThere are cases where you would not want to reject such code, though. For example, if std::move() is called inside a template function where the type in some instantiations resolves to const T, and the intent is indeed for the value to be copied. If move may in some cases cause a compiler error, then you would need to write specializations that don't call it.
- spot5010 9mo agoI didn’t think of that, but you are right. At some point I thought I understood templates r-value references work but now I’ve forgotten.
- lang4d 9mo agoclang-tidy has a check for this case