We can implement our own copy constructor if we don't want a shallow copy. So copy constructurs and copy assignment operators are used to implement deep copy.
What sort of relation/interaction do move constructors and assignment operators have with the concepts of deep and shallow copy?
Am I right in saying that move-constructors are used when we don't want a deep copy, but rather a shallow copy (and subsequently transfering ownership)?