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 | |