123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // { dg-do run }
- #include <assert.h>
- extern "C" int printf(const char *, ...);
- class Subscriptor
- {
- public:
- Subscriptor()
- { counter = 1;}
- virtual ~Subscriptor()
- {
- counter--;
- assert(counter == 0);
- }
- private:
- static int counter;
- };
- int Subscriptor::counter;
- template <typename number>
- class Polynomial : public Subscriptor
- {
- };
- class LagrangeEquidistant: public Polynomial<double>
- {
- };
- template <int value>
- class A
- {
- public:
- class Nested: public LagrangeEquidistant
- {
- };
- A() { n = new Nested; }
- ~A() { delete n; }
- Subscriptor * n;
- };
- template<typename _Tp>
- inline void
- _MyDestroy(_Tp* __pointer)
- { __pointer->~_Tp(); }
- int main()
- {
- Subscriptor * s1 = new LagrangeEquidistant;
- _MyDestroy(s1);
- A<1> * a1 = new A<1>;
- _MyDestroy(a1);
- A<2> * a2 = new A<2>;
- _MyDestroy(a2);
- return 0;
- }
|