While we're at it, we can also default the constructor and destructor of inheriting classes in their respective cpp file to prevent the construction and destruction of non-trivial types being inlined into other regions of code.