A class's virtual functions shall not be invoked from its destructor or any of its constructors

// CallExpr [ isClassMember() ] [ isVirtual() ] [ ancestor::FuncBody / parent::* [ isConstructor() | isDestructor() ] ]

1   class base{
2       public:
3       base(int, int);
4       ~base();
5       void xyz();
6       virtual void display()
7       int x = 5;
8   };
9   
10  base::base (int a, int b) {
11      display(); // MATCHES
12      xyz();
13  }
14  base::~base() {
15      display(); // MATCHES
16      xyz();
17  }
18  class derived : public base {
19  
20      public:
21      void display()
22      int y = 0;
23  };
24  
25  void main() {
26      base *ptr = new derived();
27      ptr->display();
28  }