https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92695

--- Comment #2 from Toni Neubert <lutztonineubert at gmail dot com> ---
Copy paste error. The above example should be:

```
struct A {
    constexpr virtual int get() = 0;

    constexpr virtual int set(A *o) = 0;
};

struct B : A {
    constexpr int get() override {
        return 10;
    }

    constexpr int set(A *o) override {
        a = o;
        return 20;
    }
    A *a{};
};

constexpr auto addressof = [](A &n) {
    return &n;
};

struct Foo {
    B b[1];
    A* curr_{addressof(b[0])};

    constexpr int add() {
        return curr_->set(addressof(b[0]));
    }
};


constexpr int get() {
    Foo f;
    return f.add();
}

constexpr auto a = get();

int main() {
    return a;
}
```

Reply via email to