diff options
Diffstat (limited to 'test/PCH/cxx-templates.h')
-rw-r--r-- | test/PCH/cxx-templates.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/test/PCH/cxx-templates.h b/test/PCH/cxx-templates.h index 756f208..e672b0b 100644 --- a/test/PCH/cxx-templates.h +++ b/test/PCH/cxx-templates.h @@ -220,3 +220,52 @@ template<typename...A> struct NestedExpansion { template<typename...B> auto f(A...a, B...b) -> decltype(g(a + b...)); }; template struct NestedExpansion<char, char, char>; + +namespace rdar13135282 { +template < typename _Alloc > +void foo(_Alloc = _Alloc()); + +template < bool > class __pool; + +template < template < bool > class _PoolTp > +struct __common_pool { + typedef _PoolTp < 0 > pool_type; +}; + +template < template < bool > class _PoolTp > +struct __common_pool_base : __common_pool < _PoolTp > {}; + +template < template < bool > class _PoolTp > +struct A : __common_pool_base < _PoolTp > {}; + +template < typename _Poolp = A < __pool > > +struct __mt_alloc { + typedef typename _Poolp::pool_type __pool_type; + __mt_alloc() { + foo<__mt_alloc<> >(); + } +}; +} + +namespace PR13020 { +template<typename T> +void f() { + enum E { + enumerator + }; + + T t = enumerator; +} + +template void f<int>(); +} + +template<typename T> void doNotDeserialize() {} +template<typename T> struct ContainsDoNotDeserialize { + static int doNotDeserialize; +}; +template<typename T> struct ContainsDoNotDeserialize2 { + static void doNotDeserialize(); +}; +template<typename T> int ContainsDoNotDeserialize<T>::doNotDeserialize = 0; +template<typename T> void ContainsDoNotDeserialize2<T>::doNotDeserialize() {} |