typedef long unsigned int size_t; template class allocator; template struct __replace_first_arg { }; template class _Template, typename _Up, typename _Tp, typename... _Types> struct __replace_first_arg<_Template<_Tp, _Types...>, _Up> { using type = _Template<_Up, _Types...>; }; template using __replace_first_arg_t = typename __replace_first_arg<_Tp, _Up>::type; template class new_allocator { public: typedef _Tp value_type; }; template using __allocator_base = new_allocator<_Tp>; template class allocator : public __allocator_base<_Tp> { public: }; struct __allocator_traits_base { template struct __rebind : __replace_first_arg<_Tp, _Up> { }; }; template using __alloc_rebind = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; template struct allocator_traits : __allocator_traits_base { public: template using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; }; template struct __alloc_traits { template struct rebind { typedef typename allocator_traits<_Alloc>::template rebind_alloc<_Tp> other; }; }; typedef typename __alloc_traits>::template rebind::other _Char_alloc_type;