diff options
Diffstat (limited to 'test/Modules/Inputs/submodules-merge-defs/defs.h')
-rw-r--r-- | test/Modules/Inputs/submodules-merge-defs/defs.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/test/Modules/Inputs/submodules-merge-defs/defs.h b/test/Modules/Inputs/submodules-merge-defs/defs.h index 68b57a4a62fe..247b05c47082 100644 --- a/test/Modules/Inputs/submodules-merge-defs/defs.h +++ b/test/Modules/Inputs/submodules-merge-defs/defs.h @@ -31,7 +31,7 @@ template<typename T> struct F { template<typename T> int F<T>::f() { return 0; } template<typename T> template<typename U> int F<T>::g() { return 0; } template<typename T> int F<T>::n = 0; -template<> template<typename U> int F<char>::g() { return 0; } +//template<> template<typename U> int F<char>::g() { return 0; } // FIXME: Re-enable this once we support merging member specializations. template<> struct F<void> { int h(); }; inline int F<void>::h() { return 0; } template<typename T> struct F<T *> { int i(); }; @@ -46,3 +46,31 @@ namespace G { template<typename T = int, int N = 3, template<typename> class K = F> int H(int a = 1); template<typename T = int, int N = 3, template<typename> class K = F> using I = decltype(H<T, N, K>()); +template<typename T = int, int N = 3, template<typename> class K = F> struct J {}; + +namespace NS { + struct A {}; + template<typename T> struct B : A {}; + template<typename T> struct B<T*> : B<char> {}; + template<> struct B<int> : B<int*> {}; + inline void f() {} +} + +namespace StaticInline { + struct X {}; + static inline void f(X); + static inline void g(X x) { f(x); } +} + +namespace FriendDefArg { + template<typename = int> struct A; + template<int = 0> struct B; + template<template<typename> class = A> struct C; + template<typename = int, int = 0, template<typename> class = A> struct D {}; + template<typename U> struct Y { + template<typename> friend struct A; + template<int> friend struct B; + template<template<typename> class> friend struct C; + template<typename, int, template<typename> class> friend struct D; + }; +} |