
class WindowAdapter {
public:
    virtual ~WindowAdapter() = default;
};


class GlfwAdapter : public WindowAdapter {
};

void foo(WindowAdapter* adapter) {}
int main() {
    GlfwAdapter ga;
    foo(&ga);  // Should compile without cast
    return 0;
}
