MISRA Discussion Forums

Full Version: A8-4-5: are partial moves allowed?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Are partial moves allowed by A8-4-5? If not, why not?

For example, consider the following snippet from Effective Modern C++ (Meyers), Item 25, page 169:

Code:
class Widget {
public:
   Widget(Widget&& rhs)
   : name(std::move(rhs.name)),
     p(std::move(rhs.p))
   { … }
   …

// rhs is rvalue reference
private:
   std::string name;
   std::shared_ptr<SomeDataStructure> p;
};
We have to agree that the Autosar rule is unclear on this subject.

We agree your example doesn't have any undesirable behaviour, but if the rule were to explicitly allow that, it would also have to say something about code that only moves a subset of the members, say 'name', but not 'p'