dependent-base-member-init.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // RUN: %clang_cc1 -fsyntax-only -verify %s
  2. // expected-no-diagnostics
  3. // PR4381
  4. template<class T> struct X {};
  5. template<typename T> struct Y : public X<T>::X { };
  6. // PR4621
  7. class A1 {
  8. A1(int x) {}
  9. };
  10. template<class C> class B1 : public A1 {
  11. B1(C x) : A1(x.x) {}
  12. };
  13. class A2 { A2(int x, int y); };
  14. template <class C> class B2 {
  15. A2 x;
  16. B2(C x) : x(x.x, x.y) {}
  17. };
  18. template <class C> class B3 {
  19. C x;
  20. B3() : x(1,2) {}
  21. };
  22. // PR4627
  23. template<typename _Container> class insert_iterator {
  24. _Container* container;
  25. insert_iterator(_Container& __x) : container(&__x) {}
  26. };
  27. // PR4763
  28. template<typename T> struct s0 {};
  29. template<typename T> struct s0_traits {};
  30. template<typename T> struct s1 : s0<typename s0_traits<T>::t0> {
  31. s1() {}
  32. };
  33. // PR6062
  34. namespace PR6062 {
  35. template <typename T>
  36. class A : public T::type
  37. {
  38. A() : T::type()
  39. {
  40. }
  41. template <typename U>
  42. A(U const& init)
  43. : T::type(init)
  44. { }
  45. template<typename U>
  46. A(U& init) : U::other_type(init) { }
  47. };
  48. }
  49. template<typename T, typename U>
  50. struct X0 : T::template apply<U> {
  51. X0(int i) : T::template apply<U>(i) { }
  52. };
  53. // PR7698
  54. namespace PR7698 {
  55. template<typename Type>
  56. class A {
  57. char mA[sizeof(Type *)];
  58. A(): mA() {}
  59. };
  60. }