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