PR72792 detect allocator pointer types without invalid rebinding
authorJonathan Wakely <jwakely@redhat.com>
Fri, 20 Jan 2017 12:03:36 +0000 (12:03 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 20 Jan 2017 12:03:36 +0000 (12:03 +0000)
commit4dfdda108f5263c91312da23d8f3be3b685c9607
tree20248b5dcaa4ce11e0ca39f8c3077e983ba2d368
parent2ebd93e1d7f611a9aa06c67c7b9bd82495d6adc2
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.

From-SVN: r244706
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/alloc_traits.h
libstdc++-v3/include/bits/ptr_traits.h
libstdc++-v3/include/std/type_traits
libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc [new file with mode: 0644]