1. #include <memory>
  2.  
  3. class foo
  4. {
  5.     class impl;
  6.     std::unique_ptr<impl> impl_;
  7.  
  8. public:
  9.     ~foo(); // Implement (with an empty body) where impl is complete
  10. //   foo();   // <-- adding this to the example will cause compile to pass again
  11. };
  12.  
  13. int main() {
  14.    foo bar;
  15.    return 0;
  16. }