1 template<typename T
> struct SomeTemplate
{};
3 struct DefinedInCommon
{
6 friend void FoundByADL(DefinedInCommon
);
9 template<typename T
> struct CommonTemplate
{
10 enum E
{ a
= 1, b
= 2, c
= 3 };
14 template<typename T
> struct WithFriend
{
15 friend bool operator!=(const WithFriend
&A
, const WithFriend
&B
) { return false; }
20 template<typename T
> void f() {
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
{
51 struct { int c
, d
; } s
;
56 namespace hidden_specializations
{
57 template<typename T
> void fn() {}
59 template<typename T
> struct cls
{
60 static void nested_fn() {}
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"