#include <memory>
struct Widget
{
struct Impl;
std::unique_ptr<Impl> impl;
void f();
};
int main()
{
Widget w;
}
// The above breaks when you put the below into a separate TU
struct Widget::Impl { void f() {} };
void Widget::f() { impl->f(); }
I2luY2x1ZGUgPG1lbW9yeT4KCnN0cnVjdCBXaWRnZXQKewogICAgc3RydWN0IEltcGw7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1wbD4gaW1wbDsKICAgIHZvaWQgZigpOwp9OwoKaW50IG1haW4oKQp7CiAgICBXaWRnZXQgdzsKfQoKLy8gVGhlIGFib3ZlIGJyZWFrcyB3aGVuIHlvdSBwdXQgdGhlIGJlbG93IGludG8gYSBzZXBhcmF0ZSBUVQoKc3RydWN0IFdpZGdldDo6SW1wbCB7IHZvaWQgZigpIHt9IH07Cgp2b2lkIFdpZGdldDo6ZigpIHsgaW1wbC0+ZigpOyB9Cgo=