Home | History | Annotate | Download | only in Inputs
      1 template<typename T> struct SomeTemplate {};
      2 
      3 struct DefinedInCommon {
      4   void f();
      5   struct Inner {};
      6   friend void FoundByADL(DefinedInCommon);
      7 };
      8 
      9 template<typename T> struct CommonTemplate {
     10   enum E { a = 1, b = 2, c = 3 };
     11 };
     12 
     13 namespace Std {
     14   template<typename T> struct WithFriend {
     15     friend bool operator!=(const WithFriend &A, const WithFriend &B) { return false; }
     16   };
     17 }
     18 
     19 namespace Std {
     20   template<typename T> void f() {
     21     extern T g();
     22   }
     23 }
     24 
     25 template<typename T> struct TemplateInstantiationVisibility { typedef int type; };
     26 
     27 template<typename T> struct Outer {
     28   template<typename U> struct Inner {
     29     static constexpr int f();
     30     static constexpr int g();
     31   };
     32 };
     33 
     34 template<typename T> struct WithPartialSpecialization {};
     35 template<typename T> struct WithPartialSpecialization<void(T)> { typedef int type; };
     36 typedef WithPartialSpecialization<int*> WithPartialSpecializationUse;
     37 typedef WithPartialSpecialization<void(int)> WithPartialSpecializationUse2;
     38 
     39 template<typename T> struct WithExplicitSpecialization;
     40 typedef WithExplicitSpecialization<int> WithExplicitSpecializationUse;
     41 
     42 template<typename T> struct WithImplicitSpecialMembers { int n; };
     43 
     44 template<typename T> struct WithAliasTemplate {
     45   template<typename> using X = T;
     46 };
     47 
     48 template<typename T> struct WithAnonymousDecls {
     49   struct { bool k; };
     50   union { int a, b; };
     51   struct { int c, d; } s;
     52   enum { e = 123 };
     53   typedef int X;
     54 };
     55 
     56 namespace hidden_specializations {
     57   template<typename T> void fn() {}
     58 
     59   template<typename T> struct cls {
     60     static void nested_fn() {}
     61     struct nested_cls {};
     62     static int nested_var;
     63     enum class nested_enum {};
     64 
     65     template<typename U> static void nested_fn_t() {}
     66     template<typename U> struct nested_cls_t {};
     67     template<typename U> static int nested_var_t;
     68   };
     69 
     70   template<typename T> int var;
     71 }
     72 
     73 #include "cxx-templates-textual.h"
     74