I have some code in a header that looks like this:
#include class Thing; class MyClass { std::unique_ptr< Thing > my_thing; };
The compiler needs the definition of Thing to generate the default destructor for MyClass. If you explicitly declare the destructor and move its (empty) implementation to the CPP file, the code should compile.