If I use the "Move Implementation to Source File" feature on the file constructor here:
namespace test
{
namespace io
{
//! \\class File
//! \\brief brief description
class File
{
public:
//! Default constructor.
File(const Path& filename) :
m_Impl(new FileImpl())
{
}
//! Virtual destructor.
virtual ~File()
{
}
private:
class FileImpl; // Forward declaration of internal class
FileImpl*; // Opaque pointer to implementation
}; // end class File
} // end namespace io
} // end namespace test
it looks like this:
test::io::File::File( const Path& filename ) :
m_Impl( FileImpl())
{
}
the new keyword is missing - it should look like this:
test::io::File::File( const Path& filename ) :
m_Impl(new FileImpl())
{
}