Fix msvc build
Apparantly, msvc can't handle defaulted constructors where the class contains a incomplete type in a unique_ptr.
Move the defaulted constructor implementation to cpp file to ensure it is no longer a incomplete type
Apparantly, msvc can't handle defaulted constructors where the class contains a incomplete type in a unique_ptr.
Move the defaulted constructor implementation to cpp file to ensure it is no longer a incomplete type