In my opinion as long as you don't add a member or a virtual function there shouldn't be any effect on binary compatibility since the layout of the object does not change.
If one component (say a shared library, .dll
on windows or .so
on Linux) uses the old version of the library then it will copy all instances of the object (even rvalues) regardless of whether it was created by a component using the new library (and vice versa).
As long as move semantics are used in order to improve performance and therefore the resulting moved objects behave the same as copied objects there should be no problem. The only differences would be improved performance caused by fewer calls to memory [de]allocations and copies (etc). If move operations are used to make different semantics (a moved object differs from a copied object) then all bets are off but I don't think anyone would do this on purpose (except perhaps for job security).
As long as the binary layout of the object doesn't change I don't see how any breakage can be introduced.