1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 2aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith 3aff37b48f1362dd29cc481dadebf07900ce79248Richard Smithtemplate <class _Tp, class _Up, bool = false> 4aff37b48f1362dd29cc481dadebf07900ce79248Richard Smithstruct __allocator_traits_rebind 5aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith{ 6aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith}; 7aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith 8aff37b48f1362dd29cc481dadebf07900ce79248Richard Smithtemplate <template <class, class...> class _Alloc, class _Tp, class ..._Args, 9aff37b48f1362dd29cc481dadebf07900ce79248Richard Smithclass _Up> 10aff37b48f1362dd29cc481dadebf07900ce79248Richard Smithstruct __allocator_traits_rebind<_Alloc<_Tp, _Args...>, _Up, false> 11aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith{ 12aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith typedef _Alloc<_Up, _Args...> type; 13aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith}; 14aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith 15aff37b48f1362dd29cc481dadebf07900ce79248Richard Smithtemplate <class Alloc> 16aff37b48f1362dd29cc481dadebf07900ce79248Richard Smithstruct allocator_traits 17aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith{ 18aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith template <class T> using rebind_alloc = typename __allocator_traits_rebind<Alloc, T>::type; 19aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith template <class T> using rebind_traits = allocator_traits<rebind_alloc<T>>; 20aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith}; 21aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith 22aff37b48f1362dd29cc481dadebf07900ce79248Richard Smithtemplate <class T> 23aff37b48f1362dd29cc481dadebf07900ce79248Richard Smithstruct allocator {}; 24aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith 25aff37b48f1362dd29cc481dadebf07900ce79248Richard Smithint main() 26aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith{ 27aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith allocator_traits<allocator<char>>::rebind_alloc<int> a; 28aff37b48f1362dd29cc481dadebf07900ce79248Richard Smith} 29