1 // PR9073 2 template<typename _Tp> 3 class shared_ptr{ 4 public: 5 template<class _Alloc, class ..._Args> 6 static 7 shared_ptr<_Tp> 8 allocate_shared(const _Alloc& __a, _Args&& ...__args); 9 }; 10 11 template<class _Tp> 12 template<class _Alloc, class ..._Args> 13 shared_ptr<_Tp> allocate_shared(const _Alloc & __a,_Args &&...__args)14shared_ptr<_Tp>::allocate_shared(const _Alloc& __a, _Args&& ...__args) 15 { 16 shared_ptr<_Tp> __r; 17 return __r; 18 } 19 20 template<typename...Ts> struct outer { 21 template<Ts...Vs, template<Ts> class ...Cs> struct inner { 22 inner(Cs<Vs>...); 23 }; 24 }; 25 template struct outer<int, int>; 26 27 template<typename ...T> void take_nondependent_pack(int (...arr)[sizeof(sizeof(T))]); 28 29 template<typename T> using hide = int; 30 template<typename ...T> void take_nondependent_pack_2(outer<hide<T>...>); 31