libstdc++: Fix <ext/pointer.h> incompatibilities with C++20
The equality operators for _ExtPtr_allocator are defined as non-const member functions, which causes ambiguities in C++20 due to the synthesized operator!= candidates. They should always have been const. The _Pointer_adapter class template has both value_type and element_type members, which makes readable_traits<_Pointer_adapter<T>> ambiguous. The intended workaround is to add a specialization of readable_traits. * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==) (_ExtPtr_allocator::operator!=): Add missing const qualifiers. * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add partial specialization to disambiguate the two constrained specializations. From-SVN: r280067
Showing
Please
register
or
sign in
to comment