30 lines
		
	
	
		
			880 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			880 B
		
	
	
	
		
			C++
		
	
	
	
BEGIN
 | 
						|
template<typename T = int> struct A {};
 | 
						|
template<typename T> struct B {};
 | 
						|
template<typename T> struct C;
 | 
						|
template<typename T> struct D;
 | 
						|
template<typename T> struct E;
 | 
						|
template<typename T = int> struct G;
 | 
						|
template<typename T = int> struct H;
 | 
						|
template<typename T> struct J {};
 | 
						|
template<typename T = int> struct J;
 | 
						|
struct K : J<> {};
 | 
						|
template<typename T = void> struct L;
 | 
						|
struct FriendL {
 | 
						|
  template<typename T> friend struct L;
 | 
						|
};
 | 
						|
END
 | 
						|
 | 
						|
namespace DeferredLookup {
 | 
						|
  template<typename T, typename U = T> using X = U;
 | 
						|
  template<typename T> void f() { (void) X<T>(); }
 | 
						|
  template<typename T> int n = X<T>();
 | 
						|
  template<typename T> struct S { X<T> xt; enum E : int; };
 | 
						|
  template<typename T> enum S<T>::E : int { a = X<T>() };
 | 
						|
 | 
						|
  namespace Indirect {
 | 
						|
    template<typename, bool = true> struct A {};
 | 
						|
    template<typename> struct B { template<typename T> using C = A<T>; };
 | 
						|
  }
 | 
						|
}
 |