reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    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
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
// RUN: %clang_cc1 -fsyntax-only -verify %s
// expected-no-diagnostics

// PR4381
template<class T> struct X {};
template<typename T> struct Y : public X<T>::X { };

// PR4621
class A1 {
  A1(int x) {}
};
template<class C> class B1 : public A1 {
  B1(C x) : A1(x.x) {}
};
class A2 { A2(int x, int y); };
template <class C> class B2 {
  A2 x;
  B2(C x) : x(x.x, x.y) {}
};
template <class C> class B3 {
  C x;
  B3() : x(1,2) {}
};

// PR4627
template<typename _Container> class insert_iterator {
    _Container* container;
    insert_iterator(_Container& __x) : container(&__x) {}
};

// PR4763
template<typename T> struct s0 {};
template<typename T> struct s0_traits {};
template<typename T> struct s1 : s0<typename s0_traits<T>::t0> {
  s1() {}
};

// PR6062
namespace PR6062 {
  template <typename T>
  class A : public T::type
  {
    A() : T::type()
    {  
    }
    
    template <typename U>
    A(U const& init)
      : T::type(init)
    { }

    template<typename U>
    A(U& init) : U::other_type(init) { }
  };
}

template<typename T, typename U>
struct X0 : T::template apply<U> {
  X0(int i) : T::template apply<U>(i) { }
};

// PR7698
namespace PR7698 {
  template<typename Type>
  class A {
    char mA[sizeof(Type *)];
    A(): mA() {}
  };
}