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"