I'm experiencing an error using g++-12 which does not occur in clang++-13. In particular, this code:

```
struct A {
    constexpr virtual ~A() = default;
    constexpr A() = default;
};

struct B : public A {
    constexpr ~B() = default;
    constexpr B() = default;
};

constexpr int demo(){
    B *b = new B();
    delete b;
    return 2;
}

int main(){
    constexpr int demod = demo();
    return demod;
}

```

Compiles with clang++, but with g++ gives the error:

```text
minimize-error.cpp: In function ‘int main()’:
minimize-error.cpp:18:31:   in ‘constexpr’ expansion of ‘demo()’
minimize-error.cpp:13:12: error: ‘virtual constexpr B::~B()’ used before its definition
   13 |     delete b;
      |

```

Curiously, if I just remove the `constexpr` requirement on `demod`, the example compiles and runs without error.

Any ideas as to what's happening here?