Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / Modules / Inputs / cxx-templates-common.h
blob8e730c8a852c5d36e7737c004871bfa2f20e4a7f
1 template<typename T> struct SomeTemplate {};
3 struct DefinedInCommon {
4 void f();
5 struct Inner {};
6 friend void FoundByADL(DefinedInCommon);
7 };
9 template<typename T> struct CommonTemplate {
10 enum E { a = 1, b = 2, c = 3 };
13 namespace Std {
14 template<typename T> struct WithFriend {
15 friend bool operator!=(const WithFriend &A, const WithFriend &B) { return false; }
19 namespace Std {
20 template<typename T> void f() {
21 extern T g();
25 template<typename T> struct TemplateInstantiationVisibility { typedef int type; };
27 template<typename T> struct Outer {
28 template<typename U> struct Inner {
29 static constexpr int f();
30 static constexpr int g();
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;
39 template<typename T> struct WithExplicitSpecialization;
40 typedef WithExplicitSpecialization<int> WithExplicitSpecializationUse;
42 template<typename T> struct WithImplicitSpecialMembers { int n; };
44 template<typename T> struct WithAliasTemplate {
45 template<typename> using X = T;
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;
56 namespace hidden_specializations {
57 template<typename T> void fn() {}
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 {};
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;
70 template<typename T> int var;
73 #include "cxx-templates-textual.h"