1 namespace A { 2 inline 3 namespace __1 { 4 template <class _Tp> class allocator; 5 template <class _Tp, class _Alloc = allocator<_Tp>> class list; 6 template <class _VoidPtr> class __list_iterator { 7 template <class> friend class list; 8 template <class, class> friend class list; 9 }; 10 template <class _Tp, class _Alloc> class __list_imp {}; 11 template <class _Tp, class _Alloc> class list : __list_imp<_Tp, _Alloc> { 12 public: list()13 list() {} 14 }; 15 template <class _Tp> void f(list<_Tp>); 16 } 17 } 18