BEGIN template struct A {}; template struct B {}; template struct C; template struct D; template struct E; template struct G; template struct H; template struct J {}; template struct J; struct K : J<> {}; template struct L; struct FriendL { template friend struct L; }; END namespace DeferredLookup { template using X = U; template void f() { (void) X(); } template int n = X(); template struct S { X xt; enum E : int; }; template enum S::E : int { a = X() }; namespace Indirect { template struct A {}; template struct B { template using C = A; }; } }