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 70 71 72 73
  
     | 
    
      template<typename T> struct SomeTemplate {};
struct DefinedInCommon {
  void f();
  struct Inner {};
  friend void FoundByADL(DefinedInCommon);
};
template<typename T> struct CommonTemplate {
  enum E { a = 1, b = 2, c = 3 };
};
namespace Std {
  template<typename T> struct WithFriend {
    friend bool operator!=(const WithFriend &A, const WithFriend &B) { return false; }
  };
}
namespace Std {
  template<typename T> void f() {
    extern T g();
  }
}
template<typename T> struct TemplateInstantiationVisibility { typedef int type; };
template<typename T> struct Outer {
  template<typename U> struct Inner {
    static constexpr int f();
    static constexpr int g();
  };
};
template<typename T> struct WithPartialSpecialization {};
template<typename T> struct WithPartialSpecialization<void(T)> { typedef int type; };
typedef WithPartialSpecialization<int*> WithPartialSpecializationUse;
typedef WithPartialSpecialization<void(int)> WithPartialSpecializationUse2;
template<typename T> struct WithExplicitSpecialization;
typedef WithExplicitSpecialization<int> WithExplicitSpecializationUse;
template<typename T> struct WithImplicitSpecialMembers { int n; };
template<typename T> struct WithAliasTemplate {
  template<typename> using X = T;
};
template<typename T> struct WithAnonymousDecls {
  struct { bool k; };
  union { int a, b; };
  struct { int c, d; } s;
  enum { e = 123 };
  typedef int X;
};
namespace hidden_specializations {
  template<typename T> void fn() {}
  template<typename T> struct cls {
    static void nested_fn() {}
    struct nested_cls {};
    static int nested_var;
    enum class nested_enum {};
    template<typename U> static void nested_fn_t() {}
    template<typename U> struct nested_cls_t {};
    template<typename U> static int nested_var_t;
  };
  template<typename T> int var;
}
#include "cxx-templates-textual.h"
 
     |