https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72792
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- Author: redi Date: Fri Jan 20 12:03:36 2017 New Revision: 244706 URL: https://gcc.gnu.org/viewcvs?rev=244706&root=gcc&view=rev Log: PR72792 detect allocator pointer types without invalid rebinding PR libstdc++/72792 * include/bits/alloc_traits.h (__allocator_traits_base::__diff_type) (__allocator_traits_base::__size_type): Remove. (allocator_traits::_Ptr): New class template to detect const and void pointer types without instantiating pointer_traits::rebind unnecessarily. (allocator_traits::_Diff): Likewise for detecting difference_type. (allocator_traits::_Size): New class template to detect size_type without instantiating make_unsigned unnecessarily. * include/bits/ptr_traits.h (pointer_traits::element_type): Use __detected_or_t instead of __detected_or_t_. * include/std/type_traits (__detected_or_t_): Remove. * testsuite/20_util/allocator_traits/members/pointers.cc: New test. Added: trunk/libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/alloc_traits.h trunk/libstdc++-v3/include/bits/ptr_traits.h trunk/libstdc++-v3/include/std/type_traits