#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(); }

