Also
- rely on default implementation of copy constructor to copy all data on forking the internal data objects
- mark as movable types for improved handling in Qt containers
Object of these classes are created in one place and then passed around
for read-only consumption. They are passed by value in method return
arguments and stored by value. As the classes already have a private
object for pimpl, making this an implicitly shared one is a small step.