template-list2.cc 611 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // { dg-do run }
  2. #include <assert.h>
  3. extern "C" int printf(const char *, ...);
  4. class Subscriptor
  5. {
  6. public:
  7. Subscriptor()
  8. { counter = 1;}
  9. virtual ~Subscriptor()
  10. {
  11. counter--;
  12. assert(counter == 0);
  13. }
  14. private:
  15. static int counter;
  16. };
  17. int Subscriptor::counter;
  18. template <typename number>
  19. class Polynomial : public Subscriptor
  20. {
  21. };
  22. class LagrangeEquidistant: public Polynomial<double>
  23. {
  24. };
  25. template<typename _Tp>
  26. inline void
  27. _MyDestroy(_Tp* __pointer)
  28. { __pointer->~_Tp(); }
  29. int main()
  30. {
  31. LagrangeEquidistant * s1 = new LagrangeEquidistant;
  32. _MyDestroy(s1);
  33. return 0;
  34. }