70 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
// 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() {}
 | 
						|
  };
 | 
						|
}
 |