PageRenderTime 50ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/test/SemaTemplate/destructor-template.cpp

https://bitbucket.org/generalplus/android_external_clang
C++ | 59 lines | 46 code | 12 blank | 1 comment | 0 complexity | 80d59e1e8e8e26f1e64b07f1ab2d6494 MD5 | raw file
Possible License(s): JSON
  1. // RUN: %clang_cc1 -fsyntax-only -verify %s
  2. template<typename A> class s0 {
  3. template<typename B> class s1 : public s0<A> {
  4. ~s1() {}
  5. s0<A> ms0;
  6. };
  7. };
  8. struct Incomplete;
  9. template<typename T>
  10. void destroy_me(T me) {
  11. me.~T();
  12. }
  13. template void destroy_me(Incomplete*);
  14. namespace PR6152 {
  15. template<typename T> struct X { void f(); };
  16. template<typename T> struct Y { };
  17. template<typename T>
  18. void X<T>::f() {
  19. Y<T> *y;
  20. y->template Y<T>::~Y();
  21. y->template Y<T>::~Y<T>();
  22. y->~Y();
  23. }
  24. template struct X<int>;
  25. }
  26. namespace cvquals {
  27. template<typename T>
  28. void f(int *ptr) {
  29. ptr->~T();
  30. }
  31. template void f<const volatile int>(int *);
  32. }
  33. namespace PR7239 {
  34. template<class E> class A { };
  35. class B {
  36. void f() {
  37. A<int>* x;
  38. x->A<int>::~A<int>();
  39. }
  40. };
  41. }
  42. namespace PR7904 {
  43. struct Foo {
  44. template <int i> ~Foo() {} // expected-error{{destructor cannot be declared as a template}}
  45. };
  46. Foo f;
  47. }