aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/overload/virtual2.C
blob: c93ba9e298897e41c3b8c323c76c50cff4d24e1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// PR c++/52746
// { dg-do run }

extern "C" int printf(const char*,...);
extern "C" void abort();
bool db;

struct A
{
  virtual ~A() {}
};

struct B : public A
{
  virtual ~B() { db = true; }
};

template<int> void test()
{
  B * b = new B;
  A * a = b;
  a->~A();
  ::operator delete(b);
}

int main()
{
  test<0>();
  if (!db)
    abort();
}