Я уже проверил вопросы здесь и здесь, но до сих пор не могу понять, что не так.
Это код вызова:
#include "lib.h"
using namespace lib;
int
main(const int argc, const char *argv[])
{
return 0;
}
Это код lib:
#ifndef lib_h
#define lib_h
#include <string>
#include <vector>
#include <memory>
namespace lib
{
class Foo_impl;
class Foo
{
public:
Foo();
~Foo();
private:
Foo(const Foo&);
Foo& operator=(const Foo&);
std::unique_ptr<Foo_impl> m_impl = nullptr;
friend class Foo_impl;
};
} // namespace
#endif
clang++ дает мне эту ошибку:
Недействительное приложение 'sizeof' для неполного типа 'lib:: Foo_impl'
примечание: при создании функции-члена 'std:: default_delete:: operator()' запрошен
Вы можете видеть, что я уже специально объявил Foo destructor. Что еще мне здесь не хватает?