I\'m developing a C++ library where user\'s will provide complex inputs, such as
matrices and quaternions. I don\'t want to have to reimplement these types so,
internally, I
Wrap / encapsulate. Say you want to add some additional feature, such as caching the result of a computation, like the norm of a quaternion, as an implementation change. You can't do that (as easily) if you expose the 3rd party types without forcing your client code to change its call.