+2019-11-16 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ Repair the <tuple> part of C++20 p1032 Misc constexpr bits.
+ * include/bits/uses_allocator.h (__uses_alloc0::_Sink::operaror=)
+ (__use_alloc(const _Alloc&)) : Constexpr.
+
+2019-11-17 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/std/string_view (basic_string_view(It, End)): Add range
+ constructor and deduction guide from P1391R4.
+ * testsuite/21_strings/basic_string_view/cons/char/range.cc: New test.
+
+ * include/bits/regex.h (match_results): Specialize __enable_view_impl.
+ * include/bits/stl_set.h (set): Likewise.
+ * include/bits/unordered_set.h (unordered_set, unordered_multiset):
+ Likewise.
+ * include/debug/multiset.h (__debug::multiset): Likewise.
+ * include/debug/set.h (__debug::set): Likewise.
+ * include/debug/unordered_set (__debug::unordered_set)
+ (__debug::unordered_multiset): Likewise.
+ * include/std/ranges (ranges::view, ranges::enable_view)
+ (ranges::view_interface, ranges::subrange, ranges::empty_view)
+ (ranges::single_view, ranges::views::single, ranges::iota_view)
+ (ranges::views::iota): Define for C++20.
+ * testsuite/std/ranges/empty_view.cc: New test.
+ * testsuite/std/ranges/iota_view.cc: New test.
+ * testsuite/std/ranges/single_view.cc: New test.
+ * testsuite/std/ranges/view.cc: New test.
+
+2019-11-16 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/std/ranges: Revert accidentally committed changes.
+
+ * include/std/thread (jthread::jthread()): Use nostopstate constant.
+ (jthread::jthread(Callable&&, Args&&...)): Use helper function to
+ create std::thread instead of indirection through a lambda. Use
+ remove_cvref_t instead of decay_t.
+ (jthread::joinable(), jthread::get_id(), jthread::native_handle())
+ (jthread::hardware_concurrency()): Add nodiscard attribute.
+ (swap(jthread&. jthread&)): Define hidden friend.
+ (jthread::_S_create): New helper function for constructor.
+
+2019-11-15 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ Implement the <tuple> part of C++20 p1032 Misc constexpr bits.
+ * include/std/tuple (_Head_base, _Tuple_impl(allocator_arg_t,...)
+ (_M_assign, tuple(allocator_arg_t,...), _Inherited, operator=, _M_swap)
+ (swap, pair(piecewise_construct_t,): Constexpr.
+ * (__uses_alloc0::_Sink::operator=, __uses_alloc_t): Constexpr.
+ * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: New test.
+ * testsuite/20_util/tuple/constexpr_swap.cc : New test.
+ * testsuite/20_util/uses_allocator/69293_neg.cc: Extra error for C++20.
+ * testsuite/20_util/uses_allocator/cons_neg.cc: : Extra error for C++20.
+
+2019-11-15 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/std/stop_token: Reduce header dependencies by including
+ internal headers.
+ (stop_token::swap(stop_token&), swap(stop_token&, stop_token&)):
+ Define.
+ (operator!=(const stop_token&, const stop_token&)): Fix return value.
+ (stop_token::_Stop_cb::_Stop_cb(Cb&&)): Use std::forward instead of
+ (stop_token::_Stop_state_t) [_GLIBCXX_HAS_GTHREADS]: Use lock_guard
+ instead of unique_lock.
+ [!_GLIBCXX_HAS_GTHREADS]: Do not use mutex.
+ (stop_token::stop_token(_Stop_state)): Change parameter to lvalue
+ reference.
+ (stop_source): Remove unnecessary using-declarations for names only
+ used once.
+ (swap(stop_source&, stop_source&)): Define.
+ (stop_callback(const stop_token&, _Cb&&))
+ (stop_callback(stop_token&&, _Cb&&)): Replace lambdas with a named
+ function. Use std::forward instead of std::move. Run callbacks if a
+ stop request has already been made.
+ (stop_source::_M_execute()): Remove.
+ (stop_source::_S_execute(_Stop_cb*)): Define.
+ * include/std/version (__cpp_lib_jthread): Define conditionally.
+ * testsuite/30_threads/stop_token/stop_callback.cc: New test.
+ * testsuite/30_threads/stop_token/stop_source.cc: New test.
+ * testsuite/30_threads/stop_token/stop_token.cc: Enable test for
+ immediate execution of callback.
+
+2019-11-15 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ Implement the default_searcher part of C++20 p1032 Misc constexpr bits.
+ * include/std/functional
+ (default_searcher, default_searcher::operator()): Constexpr.
+ * testsuite/20_util/function_objects/constexpr_searcher.cc: New.
+
+2019-11-15 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/iterator_concepts.h (weakly_incrementable): Adjust.
+ * include/std/concepts (default_constructible): Rename to
+ default_initializable and require default-list-initialization and
+ default-initialization to be valid (LWG 3149).
+ (semiregular): Adjust to new name.
+ * testsuite/std/concepts/concepts.lang/concept.defaultconstructible/
+ 1.cc: Rename directory to concept.defaultinitializable and adjust to
+ new name.
+ * testsuite/std/concepts/concepts.lang/concept.defaultinitializable/
+ lwg3149.cc: New test.
+ * testsuite/util/testsuite_iterators.h (test_range): Adjust.
+
+ * src/c++17/fs_path.cc [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
+ (is_disk_designator): New helper function.
+ (path::_Parser::root_path()): Use is_disk_designator.
+ (path::lexically_relative(const path&)): Implement resolution of
+ LWG 3070.
+ * testsuite/27_io/filesystem/path/generation/relative.cc: Check with
+ path components that look like a root-name.
+
+ * doc/doxygen/user.cfg.in: Add <stop_token>.
+ * include/precompiled/stdc++.h: Likewise.
+ * include/std/stop_token: Fix definition of std::nostopstate.
+ * testsuite/30_threads/headers/stop_token/synopsis.cc: New test.
+ * testsuite/30_threads/headers/thread/types_std_c++20.cc: New test.
+ * testsuite/30_threads/stop_token/stop_source.cc: New test.
+ * testsuite/30_threads/stop_token/stop_token.cc: Remove unnecessary
+ dg-require directives. Remove I/O and inclusion of <iostream>.
+
+2019-11-14 Thomas Rodgers <trodgers@redhat.com>
+
+ * include/Makefile.am: Add <stop_token> header.
+ * include/Makefile.in: Regenerate.
+ * include/std/condition_variable: Add overloads for stop_token support
+ to condition_variable_any.
+ * include/std/stop_token: New file.
+ * include/std/thread: Add jthread type.
+ * include/std/version (__cpp_lib_jthread): New value.
+ * testsuite/30_threads/condition_variable_any/stop_token/1.cc: New test.
+ * testsuite/30_threads/condition_variable_any/stop_token/2.cc: New test.
+ * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
+ New test.
+ * testsuite/30_threads/jthread/1.cc: New test.
+ * testsuite/30_threads/jthread/2.cc: New test.
+ * testsuite/30_threads/jthread/jthread.cc: New test.
+ * testsuite/30_threads/stop_token/1.cc: New test.
+ * testsuite/30_threads/stop_token/2.cc: New test.
+ * testsuite/30_threads/stop_token/stop_token.cc: New test.
+
+2019-11-14 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ Implement the <array> part of C++20 p1032 Misc constexpr bits.
+ * include/std/array (fill, swap): Make constexpr.
+ * testsuite/23_containers/array/requirements/constexpr_fill.cc: New.
+ * testsuite/23_containers/array/requirements/constexpr_swap.cc: New.
+
+2019-11-14 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/iterator_concepts.h (__iter_concept_impl): Add
+ comments.
+ (indirect_relation): Rename to indirect_binary_predicate and adjust
+ definition as per P1716R3.
+ (indirect_equivalence_relation): Define.
+ (indirectly_comparable): Adjust definition.
+ * include/std/concepts (equivalence_relation): Define.
+ * testsuite/std/concepts/concepts.callable/relation.cc: Add tests for
+ equivalence_relation.
+
+ * include/bits/iterator_concepts.h (disable_sized_sentinel): Rename to
+ disable_sized_sentinel_for.
+ * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust.
+
+2019-11-13 Jonathan Wakely <jwakely@redhat.com>
+
+ * libsupc++/compare (strong_order, weak_order, partial_order)
+ (compare_strong_order_fallback, compare_weak_order_fallback)
+ (compare_partial_order_fallback): Define customization point objects
+ for C++20.
+ * testsuite/18_support/comparisons/algorithms/partial_order.cc: New
+ test.
+ * testsuite/18_support/comparisons/algorithms/strong_order.cc: New
+ test.
+ * testsuite/18_support/comparisons/algorithms/weak_order.cc: New test.
+
+2019-11-11 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/xml/gnu/gpl-3.0.xml: Adjust link to "Why not LGPL".
+
+2019-11-10 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/xml/manual/using.xml: Switch www.hboehm.info to https.
+
+2019-11-07 Jonathan Wakely <jwakely@redhat.com>
+
+ * doc/doxygen/user.cfg.in (INPUT): Add <compare> header.
+ * include/precompiled/stdc++.h: Include <compare> header.
+
+ * libsupc++/compare (common_comparison_category)
+ (common_comparison_category_t): Define for C++20.
+ * testsuite/18_support/comparisons/common/1.cc: New test.
+
+ * include/bits/stl_algo.h (for_each_n): Handle negative count.
+ * testsuite/25_algorithms/for_each/for_each_n_debug.cc: New test.
+
+2019-11-07 Jason Merrill <jason@redhat.com>
+
+ * libsupc++/compare: Remove strong_equality and weak_equality.
+
+2019-11-06 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/Makefile.in: Regenerate.
+ * libsupc++/Makefile.in: Regenerate.
+ * libsupc++/compare (__3way_builtin_ptr_cmp): Define helper.
+ (compare_three_way): Add missing implementation.
+
+ * include/bits/iterator_concepts.h (unreachable_sentinel_t): Remove
+ redundant equality operators.
+ * testsuite/util/testsuite_iterators.h (test_range::sentinel):
+ Likewise.
+
+2019-11-05 Jonathan Wakely <jwakely@redhat.com>
+
+ * libsupc++/compare: New header.
+ * libsupc++/Makefile.am (std_HEADERS): Add compare.
+ * include/std/version: Define __cpp_lib_three_way_comparison.
+ * include/std/functional: #include <compare>.
+
+ * include/std/version [!_GLIBCXX_HOSTED]: Do not define feature test
+ macros for features that are only present in hosted builds.
+
+ * include/bits/iterator_concepts.h (__iter_without_nested_types):
+ Remove incorrect comment.
+
+2019-10-31 Jonathan Wakely <jwakely@redhat.com>
+
+ * doc/html/*: Regenerate.
+
+ * include/bits/refwrap.h (reference_wrapper, ref, cref): Add constexpr
+ specifiers for C++20.
+ * include/std/functional (_Mem_fn, mem_fn, _Bind, _Bind_result, bind)
+ (bind_front, _Not_fn, not_fn): Likewise.
+ * testsuite/20_util/bind/constexpr.cc: New test.
+ * testsuite/20_util/function_objects/bind_front/constexpr.cc: New test.
+ * testsuite/20_util/function_objects/mem_fn/constexpr.cc: New test.
+ * testsuite/20_util/function_objects/not_fn/constexpr.cc: New test.
+ * testsuite/20_util/reference_wrapper/constexpr.cc: New test.
+
+ * doc/doxygen/user.cfg.in: Add new header.
+ * include/Makefile.am: Add new header.
+ * include/Makefile.in: Regenerate.
+ * include/precompiled/stdc++.h: Include new header.
+ * include/std/ranges: New header.
+ (ranges::sentinel_t, ranges::range_value_t, ranges::range_reference_t)
+ (ranges::range_rvalue_reference_t, ranges::sized_range)
+ (ranges::output_range, ranges::input_ranges, ranges::forward_range)
+ (ranges::bidirectional_range, ranges::random_access_range)
+ (ranges::contiguous_range, ranges::common::range): Define.
+ * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Check
+ that disabled_sized_sentinel can be specialized.
+ * testsuite/std/ranges/access/begin.cc: Include <ranges> instead of
+ <iterator>.
+ * testsuite/std/ranges/access/cbegin.cc: Likewise.
+ * testsuite/std/ranges/access/cdata.cc: Likewise.
+ * testsuite/std/ranges/access/cend.cc: Likewise.
+ * testsuite/std/ranges/access/crbegin.cc: Likewise.
+ * testsuite/std/ranges/access/crend.cc: Likewise.
+ * testsuite/std/ranges/access/data.cc: Likewise.
+ * testsuite/std/ranges/access/empty.cc: Likewise.
+ * testsuite/std/ranges/access/end.cc: Likewise.
+ * testsuite/std/ranges/access/end_neg.cc: Likewise.
+ * testsuite/std/ranges/access/rbegin.cc: Likewise.
+ * testsuite/std/ranges/access/rend.cc: Likewise.
+ * testsuite/std/ranges/access/size.cc: Likewise.
+ * testsuite/std/ranges/access/size_neg.cc: Likewise.
+ * testsuite/std/ranges/headers/ranges/synopsis.cc: New test.
+ * testsuite/std/ranges/range.cc: New test.
+ * testsuite/std/ranges/refinements.cc: New test.
+ * testsuite/std/ranges/sized.cc: New test.
+ * testsuite/util/testsuite_iterators.h: Add aliases for range types.
+ (output_iterator_wrapper::WritableObject::operator=): Add const
+ qualifier so that output_iterator_wrapper satisfies writable.
+
+ * testsuite/20_util/add_pointer/value.cc: Check void types.
+
+ * include/bits/range_access.h (__sizable): Rename to __sentinel_size.
+ Remove workaround for PR c++/92268 and remove redundant requirements
+ that are already checked by sized_sentinel_for.
+ * testsuite/std/ranges/access/cend.cc: Fix failures.
+ * testsuite/std/ranges/access/end.cc: Likewise.
+
+ * include/bits/range_access.h (ranges::begin): Combine array and
+ non-array overloads into one function template. Only use ADL for
+ classes and enums.
+ (ranges::end, ranges::size): Likewise. Make unbounded arrays
+ ill-formed.
+ (ranges::rbegin, ranges::rend): Only use ADL for classes and enums.
+ Reformat _S_noexcept() functions to mirror operator() structure.
+ * testsuite/std/ranges/access/begin.cc: Check incomplete array.
+ * testsuite/std/ranges/access/end_neg.cc: New test.
+ * testsuite/std/ranges/access/size.cc: Check array of incomplete type.
+ * testsuite/std/ranges/access/size_neg.cc: New test.
+
+ * testsuite/24_iterators/range_access*.cc: Move to ...
+ * testsuite/24_iterators/range_access/range_access*.cc: ... here.
+ * testsuite/24_iterators/range_access/range_access_cpp20_neg.cc: New
+ test.
+
+2019-10-30 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/std/concepts (std::ranges::swap): Use a single overload for
+ the non-array cases, and switch using if-constexpr.
+
+ * include/bits/stl_iterator.h (__normal_iterator::iterator_concept):
+ Guard with __cpp_lib_concepts macro.
+
+ * include/std/bit (__cpp_lib_bitops): Define.
+ * include/std/version (__cpp_lib_constexpr): Remove.
+ (__cpp_lib_bitops, __cpp_lib_constexpr_dynamic_alloc): Define.
+ * testsuite/26_numerics/bit/header.cc: New test.
+ * testsuite/26_numerics/bit/header-2.cc: New test.
+ * testsuite/20_util/allocator_traits/header.cc: New test.
+ * testsuite/20_util/allocator_traits/header-2.cc: New test.
+
+ * include/bits/stl_iterator.h (namespace __gnu_cxx): Remove
+ using-declarations for std::iterator and std::iterator_traits.
+ (__gnu_cxx::__normal_iterator): Qualify iterator_traits.
+ * include/ext/algorithm (namespace __gnu_cxx): Remove
+ using-declarations for std names and qualify those names when used.
+ Also refer to std::min in parentheses to protect against function-like
+ macros.
+ * include/ext/rc_string_base.h: Qualify iterator_traits.
+ * include/ext/sso_string_base.h: Qualify iterator_traits.
+
+ PR libstdc++/92272
+ * include/bits/stl_bvector.h (_Bit_iterator::pointer)
+ (_Bit_const_iterator::pointer): Define as void for C++20.
+ * include/bits/stl_iterator.h (reverse_iterator::operator->()): Add
+ constraints for C++20.
+ (__normal_iterator::iterator_concept): Define for C++20.
+ * include/bits/streambuf_iterator.h (istreambuf_iterator::pointer):
+ Define as void for C++20.
+ (ostreambuf_iterator::difference_type): Define as ptrdiff_t for C++20.
+ (ostreambuf_iterator::ostreambuf_iterator()): Add default constructor
+ for C++20.
+ * testsuite/23_containers/vector/bool/iterator_c++20.cc: New test.
+ * testsuite/24_iterators/bidirectional/concept.cc: New test.
+ * testsuite/24_iterators/bidirectional/tag.cc: New test.
+ * testsuite/24_iterators/contiguous/concept.cc: New test.
+ * testsuite/24_iterators/contiguous/tag.cc: New test.
+ * testsuite/24_iterators/forward/concept.cc: New test.
+ * testsuite/24_iterators/forward/tag.cc: New test.
+ * testsuite/24_iterators/input/concept.cc: New test.
+ * testsuite/24_iterators/input/tag.cc: New test.
+ * testsuite/24_iterators/istreambuf_iterator/requirements/typedefs.cc:
+ New test.
+ * testsuite/24_iterators/ostreambuf_iterator/requirements/typedefs.cc:
+ New test.
+ * testsuite/24_iterators/output/concept.cc: New test.
+ * testsuite/24_iterators/output/tag.cc: New test.
+ * testsuite/24_iterators/random_access/concept.cc: New test.
+ * testsuite/24_iterators/random_access/tag.cc: New test.
+ * testsuite/24_iterators/range_operations/advance_debug_neg.cc: New
+ test.
+ * testsuite/24_iterators/random_access_iterator/26020.cc: Move to ...
+ * testsuite/24_iterators/operations/26020.cc: ... here.
+ * testsuite/24_iterators/random_access_iterator/
+ string_vector_iterators.cc: Move to ...
+ * testsuite/24_iterators/random_access/string_vector_iterators.cc: ...
+ here.
+
+ * testsuite/util/testsuite_iterators.h: Fix typo in __cplusplus check.
+
+2019-10-29 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/range_access.h (ranges::disable_sized_range)
+ (ranges::begin, ranges::end, ranges::cbegin, ranges::cend)
+ (ranges::rbegin, ranges::rend, ranges::crbegin, ranges::crend)
+ (ranges::size, ranges::empty, ranges::data, ranges::cdata)
+ (ranges::range, ranges::sized_range, ranges::advance, ranges::distance)
+ (ranges::next, ranges::prev): Guard with __cpp_lib_concepts.
+ * include/bits/stl_iterator.h (disable_sized_sentinel): Likewise.
+
+ * include/bits/alloc_traits.h (__cpp_lib_constexpr_dynamic_alloc):
+ Define.
+ (allocator_traits::_S_construct, allocator_traits::_S_destroy)
+ (__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Use
+ _GLIBCXX14_CONSTEXPR instead of constexpr.
+ * include/bits/stl_construct.h (_Destroy): Likewise.
+
+ * include/Makefile.am: Add new header.
+ * include/Makefile.in: Regenerate.
+ * include/bits/iterator_concepts.h: New header.
+ (contiguous_iterator_tag, iter_reference_t, ranges::iter_move)
+ (iter_rvalue_reference_t, incrementable_traits, iter_difference_t)
+ (readable_traits, iter_value_t, readable, iter_common_reference_t)
+ (writable, waekly_incrementable, incrementable)
+ (input_or_output_iterator, sentinel_for, disable_sized_sentinel)
+ (sized_sentinel_for, input_iterator, output_iterator)
+ (forward_iterator, bidirectional_iterator, random_access_iterator)
+ (contiguous_iterator, indirectly_unary_invocable)
+ (indirectly_regular_unary_invocable, indirect_unary_predicate)
+ (indirect_relation, indirect_strict_weak_order, indirect_result_t)
+ (projected, indirectly_movable, indirectly_movable_storable)
+ (indirectly_copyable, indirectly_copyable_storable, ranges::iter_swap)
+ (indirectly_swappable, indirectly_comparable, permutable, mergeable)
+ (sortable, unreachable_sentinel_t, unreachable_sentinel)
+ (default_sentinel_t, default_sentinel): Define.
+ (__detail::__cpp17_iterator, __detail::__cpp17_input_iterator)
+ (__detail::__cpp17_fwd_iterator, __detail::__cpp17_bidi_iterator)
+ (__detail::__cpp17_randacc_iterator): Define.
+ (__iterator_traits): Define constrained specializations.
+ * include/bits/move.h (move): Only use old concept check for C++98.
+ * include/bits/range_access.h (ranges::disable_sized_range)
+ (ranges::begin, ranges::end, ranges::cbegin, ranges::cend)
+ (ranges::rbegin, ranges::rend, ranges::crbegin, ranges::crend)
+ (ranges::size, ranges::empty, ranges::data, ranges::cdata): Define
+ new customization points for C++20.
+ (ranges::range, ranges::sized_range): Define new concepts for C++20.
+ (ranges::advance, ranges::distance, ranges::next, ranges::prev):
+ Define new functions for C++20.
+ (__adl_end, __adl_cdata, __adl_cbegin, __adl_cend, __adl_rbegin)
+ (__adl_rend, __adl_crbegin, __adl_crend, __adl_cdata, __adl_size)
+ (__adl_empty): Remove.
+ * include/bits/stl_iterator.h (disable_sized_sentinel): Specialize
+ for reverse_iterator.
+ * include/bits/stl_iterator_base_types.h (contiguous_iterator_tag):
+ Define new struct for C++20.
+ (iterator_traits<_Tp*>): Constrain partial specialization in C++20.
+ * include/std/concepts (__is_class_or_enum): Move to __detail
+ namespace.
+ * testsuite/20_util/forward/c_neg.cc: Adjust dg-error line number.
+ * testsuite/20_util/forward/f_neg.cc: Likewise.
+ * testsuite/24_iterators/associated_types/incrementable.traits.cc: New
+ test.
+ * testsuite/24_iterators/associated_types/readable.traits.cc: New test.
+ * testsuite/24_iterators/contiguous/concept.cc: New test.
+ * testsuite/24_iterators/contiguous/tag.cc: New test.
+ * testsuite/24_iterators/customization_points/iter_move.cc: New test.
+ * testsuite/24_iterators/customization_points/iter_swap.cc: New test.
+ * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: New test.
+ * testsuite/24_iterators/range_operations/advance.cc: New test.
+ * testsuite/24_iterators/range_operations/distance.cc: New test.
+ * testsuite/24_iterators/range_operations/next.cc: New test.
+ * testsuite/24_iterators/range_operations/prev.cc: New test.
+ * testsuite/26_numerics/adjacent_difference/requirements/
+ explicit_instantiation/2.cc: Rename types that conflict with C++20
+ concepts.
+ * testsuite/26_numerics/adjacent_difference/requirements/
+ explicit_instantiation/pod.cc: Likewise.
+ * testsuite/26_numerics/partial_sum/requirements/
+ explicit_instantiation/2.cc: Likewise.
+ * testsuite/26_numerics/partial_sum/requirements/
+ explicit_instantiation/pod.cc: Likewise.
+ * testsuite/experimental/iterator/requirements.cc: Likewise.
+ * testsuite/std/ranges/access/begin.cc: New test.
+ * testsuite/std/ranges/access/cbegin.cc: New test.
+ * testsuite/std/ranges/access/cdata.cc: New test.
+ * testsuite/std/ranges/access/cend.cc: New test.
+ * testsuite/std/ranges/access/crbegin.cc: New test.
+ * testsuite/std/ranges/access/crend.cc: New test.
+ * testsuite/std/ranges/access/data.cc: New test.
+ * testsuite/std/ranges/access/empty.cc: New test.
+ * testsuite/std/ranges/access/end.cc: New test.
+ * testsuite/std/ranges/access/rbegin.cc: New test.
+ * testsuite/std/ranges/access/rend.cc: New test.
+ * testsuite/std/ranges/access/size.cc: New test.
+ * testsuite/util/testsuite_iterators.h (contiguous_iterator_wrapper)
+ (test_range, test_sized_range): New test utilities.
+
+ * testsuite/util/testsuite_iterators.h (BoundsContainer::size()): Add
+ new member function.
+ (WritableObject::operator=): Constrain with enable_if when available.
+ (remove_cv): Use std::remove_if when available.
+ (test_container::it(int)): Use size().
+ (test_container::size()): Use BoundsContainer::size().
+
+ PR libstdc++/92267
+ * include/bits/stl_deque.h (_Deque_iterator(const _Deque_iterator&)):
+ Do not define as defaulted.
+ * testsuite/23_containers/deque/types/92267.cc: New test.
+
+2019-10-26 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/xml/manual/codecvt.xml: Switch pubs.opengroup.org to https.
+ * doc/xml/manual/locale.xml (LC_ALL): Ditto.
+ * doc/xml/manual/messages.xml: Ditto.
+
+2019-10-26 John David Anglin <danglin@gcc.gnu.org>
+
+ * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
+
+2019-10-25 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/util/testsuite_iterators.h (output_iterator_wrapper)
+ (input_iterator_wrapper, forward_iterator_wrapper)
+ bidirectional_iterator_wrapper, random_access_iterator_wrapper): Remove
+ user-provided copy constructors and copy assignment operators so they
+ are defined implicitly.
+ (input_iterator_wrapper): Initialize members in default constructor.
+ (forward_iterator_wrapper): Remove assignments to members of base.
+
+ * include/bits/allocator.h: Check __cpp_constexpr_dynamic_alloc
+ before making the std::allocator destructor constexpr.
+ * testsuite/20_util/allocator/requirements/constexpr.cc: New test.
+
+ * include/bits/range_cmp.h: Check __cpp_lib_concepts before defining
+ concepts. Fix comment.
+ * include/bits/allocator.h
+
+2019-10-25 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/xml/manual/policy_data_structures_biblio.xml: Switch
+ pubs.opengroup.org to https.
+
+2019-10-25 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/xml/gnu/gpl-3.0.xml: Switch www.gnu.org to https.
+
+2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
+
+ * doc/xml/manual/status_cxx2020.xml: Add rows and update status.
+
+2019-10-24 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/allocator.h (allocator<void>): Restore the explicit
+ specialization for C++20, but make its API consistent with the primary
+ template.
+ (allocator::~allocator()): Restore the destructor for C++20, but make
+ it constexpr.
+ * testsuite/20_util/allocator/rebind_c++20.cc: Check allocator<void>.
+ * testsuite/20_util/allocator/requirements/typedefs_c++20.cc: Likewise.
+ * testsuite/20_util/allocator/void.cc: Check that constructors and
+ destructors are trivial. Check for converting constructor in C++20.
+ * testsuite/ext/malloc_allocator/variadic_construct.cc: Simplify
+ dejagnu target selector.
+ * testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
+
+ * include/experimental/executor (__use_future_ct, use_future_t):
+ Define partial specializations for std::allocator.
+ (__use_future_ch): Overload constructor for completion tokens using
+ std::allocator.
+
+ PR libstdc++/88338 Implement P0898R3, C++20 concepts library
+ * doc/xml/manual/status_cxx2020.xml: Update status.
+ * doc/html/*: Regenerate.
+ * testsuite/std/concepts/1.cc: New test.
+ * testsuite/std/concepts/2.cc: New test.
+
+ * include/bits/random.h (uniform_random_bit_generator): Define for
+ C++20.
+ * testsuite/26_numerics/random/concept.cc: New test.
+ * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
+
+2019-10-23 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/std/functional (invoke): Add constexpr for C++20.
+ * include/std/version (__cpp_lib_constexpr_invoke): Define.
+ * testsuite/20_util/function_objects/invoke/constexpr.cc: New test.
+
+ PR c++/91369 Implement P0784R7 changes to allocation and construction
+ * include/bits/alloc_traits.h: Include <bits/stl_construct.h>.
+ (allocator_traits::_S_allocate, allocator_traits::_S_construct)
+ (allocator_traits::_S_destroy, allocator_traits::_S_max_size)
+ (allocator_traits::_S_select, allocator_traits::allocate)
+ (allocator_traits::deallocate, allocator_traits::construct)
+ (allocator_traits::destroy, allocator_traits::max_size)
+ (allocator_traits::select_on_container_copy_construction)
+ (allocator_traits<allocator<T>>): Add constexpr specifier for C++20.
+ (allocator_traits<allocator<T>>::construct): Use construct_at.
+ (allocator_traits<allocator<T>>::destroy): Use destroy_at.
+ (__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Add constexpr
+ specifier.
+ (_Destroy(ForwardIterator, ForwardIterator, Alloc&))
+ (_Destroy(ForwardIterator, ForwardIterator, allocator<T>&)): Move here
+ from <bits/stl_construct.h>.
+ * include/bits/allocator.h (allocator::~allocator): Remove for C++20.
+ (allocator::allocate, allocate::deallocate): Define for C++20 and up.
+ (operator==, operator!=): Add constexpr specifier for C++20.
+ * include/bits/stl_construct.h: Don't include <ext/alloc_traits.h>.
+ (destroy_at): For C++20 add constexpr specifier and support for
+ destroying arrays.
+ (construct_at): Define new function for C++20.
+ (_Construct): Return result of placement new-expression. For C++11 and
+ up add constexpr. For C++20 dispatch to std::construct_at during
+ constant evaluation.
+ (_Destroy(pointer)): Add constexpr specifier. For C++20 dispatch to
+ std::destroy_at during constant evaluation.
+ (_Destroy_aux::__destroy, _Destroy_n_aux::__destroy_n): Add constexpr
+ specifier for C++20.
+ (_Destroy(ForwardIterator, ForwardIterator))
+ (_Destroy(ForwardIterator, Size)): Likewise. Do not elide trivial
+ destructors during constant evaluation.
+ (destroy, destroy_n): Add constexpr specifier for C++20.
+ (_Destroy(ForwardIterator, ForwardIterator, Alloc&))
+ (_Destroy(ForwardIterator, ForwardIterator, allocator<T>&)): Move to
+ <bits/alloc_traits.h>, to remove dependency on allocators.
+ * include/bits/stl_uninitialized.h: Include <ext/alloc_traits.h>.
+ Include <bits/stl_pair.h> instead of <utility>.
+ * include/ext/alloc_traits.h: Always include <bits/alloc_traits.h>.
+ (__alloc_traits::construct, __alloc_traits::destroy)
+ (__alloc_traits::_S_select_on_copy, __alloc_traits::_S_on_swap): Add
+ constexpr specifier.
+ * include/ext/malloc_allocator.h (operator==, operator!=): Add
+ constexpr specifier for C++20.
+ * include/ext/new_allocator.h (operator==, operator!=): Likewise.
+ * testsuite/20_util/headers/memory/synopsis.cc: Add constexpr.
+ * testsuite/20_util/scoped_allocator/69293_neg.cc: Ignore additional
+ errors due to constexpr function called after failed static_assert.
+ * testsuite/20_util/specialized_algorithms/construct_at/1.cc: New test.
+ * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
+ Ignore additional errors due to constexpr function called after failed
+ static_assert.
+ * testsuite/23_containers/vector/cons/destructible_neg.cc: Likewise.
+
+ * testsuite/20_util/bind/91371.cc: Fix test to compile as C++11.
+
+ * include/debug/helper_functions.h (__valid_range): Change
+ _GLIBCXX_CONSTEXPR to _GLIBCXX14_CONSTEXPR.
+
+ * include/ext/throw_allocator.h (throw_allocator_base): Qualify
+ size_t and ptrdiff_t.
+
+ * include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp:
+ Use detail::rebind_traits.
+ * include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp:
+ Likewise.
+ * include/ext/pb_ds/detail/bin_search_tree_/traits.hpp: Likewise.
+ * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Likewise.
+ * include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp: Likewise.
+ * include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp: Likewise.
+ * include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp:
+ Likewise.
+ * include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp:
+ Likewise.
+ * include/ext/pb_ds/detail/branch_policy/branch_policy.hpp: Likewise.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Likewise.
+ * include/ext/pb_ds/detail/cond_dealtor.hpp: Likewise.
+ * include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp (has_eq_fn): Likewise.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Likewise.
+ * include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Likewise.
+ * include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Likewise.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ left_child_next_sibling_heap_.hpp: Likewise.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp:
+ Likewise.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ point_const_iterator.hpp: Likewise.
+ * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Likewise.
+ * include/ext/pb_ds/detail/ov_tree_map_/
+ constructors_destructor_fn_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Likewise.
+ * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Likewise.
+ * include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp: Likewise.
+ * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Likewise.
+ * include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp: Likewise.
+ * include/ext/pb_ds/detail/rb_tree_map_/node.hpp: Likewise.
+ * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp: Likewise.
+ * include/ext/pb_ds/detail/splay_tree_/node.hpp: Likewise.
+ * include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp: Likewise.
+ * include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp:
+ Likewise.
+ * include/ext/pb_ds/detail/type_utils.hpp: Fix typo in comment.
+ * include/ext/pb_ds/detail/types_traits.hpp (stored_value): Add
+ bool parameter to control whether the hash value is stored.
+ (select_base_type): New class template and partial specialization.
+ (maybe_null_type): Likewise.
+ (rebind_traits): New class template.
+ (type_base): Remove four nearly identical specializations.
+ (type_dispatch): Remove.
+ (type_traits): Use select_base_type and maybe_null_type instead of
+ type_base to control differences between specializations.
+ * include/ext/pb_ds/list_update_policy.hpp: Use detail::rebind_traits.
+ * include/ext/pb_ds/priority_queue.hpp: Likewise.
+ * include/ext/pb_ds/tree_policy.hpp: Likewise.
+ * include/ext/pb_ds/trie_policy.hpp: Likewise.
+
+ * include/backward/hash_set (hash_set): Use __alloc_traits.
+ * include/backward/hashtable.h (_Hashtable): Likewise.
+ * include/ext/alloc_traits.h (__alloc_traits::allocate): Add overload
+ taking a hint.
+ * include/ext/extptr_allocator.h (_ExtPtr_allocator::allocate): Ignore
+ hint.
+ * include/ext/slist (_Slist_base): Use __alloc_traits.
+ * include/tr1/hashtable.h (_Hashtable): Likewise.
+ * include/tr1/regex (match_results): Use vector::const_reference
+ instead of assuming the allocator defines it.
+ * testsuite/backward/hash_map/23528.cc: Use allocator_traits in C++11.
+ * testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc: Use
+ __gnu_test::max_size.
+ * testsuite/tr1/6_containers/unordered_multimap/capacity/
+ 29134-multimap.cc: Likewise.
+ * testsuite/tr1/6_containers/unordered_multiset/capacity/
+ 29134-multiset.cc: Likewise.
+ * testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc:
+ Likewise.
+
+2019-10-22 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/util/testsuite_abi.h: Restore use of tr1/unordered_map
+ when compiled as C++98.
+
+ * include/bits/memoryfwd.h (uses_allocator): Do not declare for C++98.
+ * testsuite/17_intro/names.cc: Check uses_allocator in C++98.
+
+ * include/bits/alloc_traits.h
+ (allocator_traits<allocator<T>>::allocate): Ignore hint for C++20.
+ (allocator_traits<allocator<T>>::construct): Perform placement new
+ directly for C++20, instead of calling allocator<T>::construct.
+ (allocator_traits<allocator<T>>::destroy): Call destructor directly
+ for C++20, instead of calling allocator<T>::destroy.
+ (allocator_traits<allocator<T>>::max_size): Return value directly
+ for C++20, instead of calling std::allocator<T>::max_size().
+ (__do_alloc_on_copy, __do_alloc_on_move, __do_alloc_on_swap): Do not
+ define for C++17 and up.
+ (__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Use if-constexpr
+ for C++17 and up, instead of tag dispatching.
+ * include/bits/allocator.h (allocator<void>): Remove for C++20.
+ (allocator::pointer, allocator::const_pointer, allocator::reference)
+ (allocator::const_reference, allocator::rebind): Remove for C++20.
+ * include/bits/basic_string.h (basic_string): Use __alloc_traits to
+ rebind allocator.
+ * include/bits/memoryfwd.h (allocator<void>): Remove for C++20.
+ * include/ext/debug_allocator.h: Use __alloc_traits for rebinding.
+ * include/ext/malloc_allocator.h (malloc_allocator::~malloc_allocator)
+ (malloc_allocator::pointer, malloc_allocator::const_pointer)
+ (malloc_allocator::reference, malloc_allocator::const_reference)
+ (malloc_allocator::rebind, malloc_allocator::max_size)
+ (malloc_allocator::construct, malloc_allocator::destroy): Do not
+ define for C++20.
+ (malloc_allocator::_M_max_size): Define new function.
+ * include/ext/new_allocator.h (new_allocator::~new_allocator)
+ (new_allocator::pointer, new_allocator::const_pointer)
+ (new_allocator::reference, new_allocator::const_reference)
+ (new_allocator::rebind, new_allocator::max_size)
+ (new_allocator::construct, new_allocator::destroy): Do not
+ define for C++20.
+ (new_allocator::_M_max_size): Define new function.
+ * include/ext/rc_string_base.h (__rc_string_base::_Rep): Use
+ __alloc_traits to rebind allocator.
+ * include/ext/rope (_Rope_rep_base, _Rope_base): Likewise.
+ (rope::rope(CharT, const allocator_type&)): Use __alloc_traits
+ to construct character.
+ * include/ext/slist (_Slist_base): Use __alloc_traits to rebind
+ allocator.
+ * include/ext/sso_string_base.h (__sso_string_base::_M_max_size):
+ Use __alloc_traits.
+ * include/ext/throw_allocator.h (throw_allocator): Do not use optional
+ members of std::allocator, use __alloc_traits members instead.
+ * include/ext/vstring.h (__versa_string): Use __alloc_traits.
+ * include/ext/vstring_util.h (__vstring_utility): Likewise.
+ * include/std/memory: Include <bits/alloc_traits.h>.
+ * testsuite/20_util/allocator/8230.cc: Use __gnu_test::max_size.
+ * testsuite/20_util/allocator/rebind_c++20.cc: New test.
+ * testsuite/20_util/allocator/requirements/typedefs.cc: Do not check
+ for pointer, const_pointer, reference, const_reference or rebind in
+ C++20.
+ * testsuite/20_util/allocator/requirements/typedefs_c++20.cc: New test.
+ * testsuite/23_containers/deque/capacity/29134.cc: Use
+ __gnu_test::max_size.
+ * testsuite/23_containers/forward_list/capacity/1.cc: Likewise.
+ * testsuite/23_containers/list/capacity/29134.cc: Likewise.
+ * testsuite/23_containers/map/capacity/29134.cc: Likewise.
+ * testsuite/23_containers/multimap/capacity/29134.cc: Likewise.
+ * testsuite/23_containers/multiset/capacity/29134.cc: Likewise.
+ * testsuite/23_containers/set/capacity/29134.cc: Likewise.
+ * testsuite/23_containers/vector/capacity/29134.cc: Likewise.
+ * testsuite/ext/malloc_allocator/variadic_construct.cc: Do not run
+ test for C++20.
+ * testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
+ * testsuite/ext/vstring/capacity/29134.cc: Use __gnu_test::max_size.
+ * testsuite/util/replacement_memory_operators.h: Do not assume
+ Alloc::pointer exists.
+ * testsuite/util/testsuite_allocator.h (__gnu_test::max_size): Define
+ helper to call max_size for any allocator.
+
+2019-10-22 Andreas Schwab <schwab@suse.de>
+
+ * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
+
+2019-10-18 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/92143
+ * libsupc++/new_opa.cc (operator new) [__APPLE__]: Increase alignment
+ to at least sizeof(void*).
+
+ * include/bits/range_cmp.h (ranges::less::operator()): Inline the
+ logic from std::less::operator() to remove the dependency on it.
+
+2019-10-17 Jonathan Wakely <jwakely@redhat.com>
+
+ * doc/doxygen/user.cfg.in (INPUT): Add new C++17 and C++20 headers.
+
+ * include/Makefile.am: Add new header.
+ * include/Makefile.in: Regenerate.
+ * include/bits/range_cmp.h: New header for C++20 function objects.
+ * include/std/functional: Include new header.
+ * testsuite/20_util/function_objects/identity/1.cc: New test.
+ * testsuite/20_util/function_objects/range.cmp/equal_to.cc: New test.
+ * testsuite/20_util/function_objects/range.cmp/greater.cc: New test.
+ * testsuite/20_util/function_objects/range.cmp/greater_equal.cc: New
+ test.
+ * testsuite/20_util/function_objects/range.cmp/less.cc: New test.
+ * testsuite/20_util/function_objects/range.cmp/less_equal.cc: New test.
+ * testsuite/20_util/function_objects/range.cmp/not_equal_to.cc: New
+ test.
+
+ PR libstdc++/92124
+ * include/bits/forward_list.h
+ (_M_move_assign(forward_list&&, false_type)): Do not use
+ __make_move_if_noexcept, instead move unconditionally.
+ * include/bits/stl_deque.h (_M_move_assign2(deque&&, false_type)):
+ Likewise.
+ * include/bits/stl_list.h (_M_move_assign(list&&, false_type)):
+ Likewise.
+ * include/bits/stl_vector.h (_M_move_assign(vector&&, false_type)):
+ Likewise.
+ * testsuite/23_containers/vector/92124.cc: New test.
+
+2019-10-16 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/c++config (_GLIBCXX_BUILTIN_IS_SAME_AS): Define to
+ one of __is_same_as or __is_same when available.
+ * include/std/concepts (__detail::__same_as): Use std::is_same_v.
+ * include/std/type_traits (is_same) [_GLIBCXX_BUILTIN_IS_SAME_AS]:
+ Use new macro instead of __is_same_as.
+ (is_same) [!_GLIBCXX_BUILTIN_IS_SAME_AS]: Restore partial
+ specialization.
+ (is_same_v) [_GLIBCXX_BUILTIN_IS_SAME_AS]: Use new macro.
+ (is_same_v) [!_GLIBCXX_BUILTIN_IS_SAME_AS]: Use std::is_same.
+
+2019-10-16 François Dumont <fdumont@gcc.gnu.org>
+
+ * src/c++11/debug.cc (print_field): Replace constness_names <unknown>
+ entry with <unknown constness>. Replace state_names <unknown> entry with
+ <unknown state>.
+
+2019-10-11 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/Makefile.am: Add new header.
+ * include/Makefile.in: Regenerate.
+ * include/precompiled/stdc++.h: Include <concepts>.
+ * include/std/concepts: New header for C++20.
+ * include/std/version (__cpp_lib_concepts): Define.
+ * scripts/create_testsuite_files: Look for test files in new std
+ directory.
+ * testsuite/libstdc++-dg/conformance.exp: Likewise.
+ * testsuite/std/concepts/concepts.callable/invocable.cc: New test.
+ * testsuite/std/concepts/concepts.callable/regular_invocable.cc: New
+ test.
+ * testsuite/std/concepts/concepts.callable/relation.cc: New test.
+ * testsuite/std/concepts/concepts.callable/strictweakorder.cc: New
+ test.
+ * testsuite/std/concepts/concepts.lang/concept.arithmetic/
+ floating_point.cc: New test.
+ * testsuite/std/concepts/concepts.lang/concept.arithmetic/integral.cc:
+ New test.
+ * testsuite/std/concepts/concepts.lang/concept.arithmetic/
+ signed_integral.cc: New test.
+ * testsuite/std/concepts/concepts.lang/concept.arithmetic/
+ unsigned_integral.cc: New test.
+ * testsuite/std/concepts/concepts.lang/concept.assignable/1.cc: New
+ test.
+ * testsuite/std/concepts/concepts.lang/concept.common/1.cc: New test.
+ * testsuite/std/concepts/concepts.lang/concept.commonref/1.cc: New
+ test.
+ * testsuite/std/concepts/concepts.lang/concept.constructible/1.cc:
+ New test.
+ * testsuite/std/concepts/concepts.lang/concept.convertible/1.cc:
+ New test.
+ * testsuite/std/concepts/concepts.lang/concept.copyconstructible/1.cc:
+ New test.
+ * testsuite/std/concepts/concepts.lang/concept.defaultconstructible/
+ 1.cc: New test.
+ * testsuite/std/concepts/concepts.lang/concept.derived/1.cc:
+ New test.
+ * testsuite/std/concepts/concepts.lang/concept.destructible/1.cc:
+ New test.
+ * testsuite/std/concepts/concepts.lang/concept.moveconstructible/1.cc:
+ New test.
+ * testsuite/std/concepts/concepts.lang/concept.same/1.cc:
+ New test.
+ * testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc:
+ New test.
+ * testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc:
+ New test.
+ * testsuite/std/concepts/concepts.lang/concept.swappable/
+ swappable_with.cc: New test.
+ * testsuite/std/concepts/concepts.object/copyable.cc: New test.
+ * testsuite/std/concepts/concepts.object/movable.cc: New test.
+ * testsuite/std/concepts/concepts.object/regular.cc: New test.
+ * testsuite/std/concepts/concepts.object/semiregular.cc: New test.
+
+ * include/std/type_traits (is_same): Replace partial specialization
+ by using __is_same_as built-in in primary template.
+ (is_same_v): Use __is_same_as built-in instead of instantiating the
+ is_same trait.
+
+ PR libstdc++/92059
+ * include/tr2/dynamic_bitset (__dynamic_bitset_base): Define all
+ special member functions as defaulted. Add noexcept to most members.
+ (__dynamic_bitset_base(size_t, unsigned long long, const _Alloc&)):
+ Mask off unwanted bits in the __val parameter. Avoid undefined left
+ shifts.
+ (__dynamic_bitset_base::_M_assign): Remove.
+ (__dynamic_bitset_base::_M_do_reset): Use std::fill.
+ (__dynamic_bitset_base::_M_are_all_aux): Avoid integer promotion when
+ block_type has lower rank than int.
+ (dynamic_bitset): Add noexcept to most members. Use injected-class-name
+ in return types and parameter types.
+ (dynamic_bitset::_M_Nb): Add default member initializer.
+ (dynamic_bitset(), dynamic_bitset(const dynamic_bitset&)): Define as
+ defaulted.
+ (dynamic_bitset(dynamic_bitset&&)): Clear source object after move.
+ (dynamic_bitset::operator=(const dynamic_bitset&)): Define as
+ defaulted.
+ (dynamic_bitset::operator=(dynamic_bitset&&)): Add noexcept-specifier.
+ Define without using swap, to propagate allocator correctly.
+ (dynamic_bitset(const char*, const _Alloc&)): Use strlen.
+ (dynamic_bitset::_M_do_sanitize, dynamic_bitset::_M_do_fill): Use
+ casts to avoid unwanted integer promotions.
+ (dynamic_bitset::_M_copy_from_ptr): Rearrange template parameters and
+ add default template arguments and default argument to simplify usage.
+ (dynamic_bitset::_M_copy_from_string): Adjust call to _M_copy_from_ptr.
+ (operator==(const dynamic_bitset&, const dynamic_bitset&))
+ (operator<(const dynamic_bitset&, const dynamic_bitset&)): Use _M_Nb.
+ * include/tr2/dynamic_bitset.tcc (dynamic_bitset::_M_copy_from_ptr):
+ Adjust template parameters to match declaration.
+ * testsuite/tr2/dynamic_bitset/cmp.cc: New test.
+ * testsuite/tr2/dynamic_bitset/cons.cc: New test.
+ * testsuite/tr2/dynamic_bitset/copy.cc: New test.
+ * testsuite/tr2/dynamic_bitset/move.cc: New test.
+ * testsuite/tr2/dynamic_bitset/pr92059.cc: New test.
+
+ * include/bits/charconv.h (__to_chars_len): Avoid -Wsign-compare
+ warnings.
+
+2019-10-10 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/91057
+ * src/c++98/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]
+ (find_ldbl_sync_facet): Fix parameter type and missing return.
+
+2019-10-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/91364 - P0388R4: Permit conversions to arrays of unknown bound.
+ PR c++/69531 - DR 1307: Differently bounded array parameters.
+ PR c++/88128 - DR 330: Qual convs and pointers to arrays of pointers.
+ * testsuite/23_containers/span/lwg3255.cc: Adjust test to match the
+ post-P0388R4 behavior.
+
+2019-10-09 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/91057
+ * src/c++98/locale.cc (locale::id::_M_id()) [__GTHREADS]: Use atomic
+ compare-exchange or double-checked lock to ensure only one thread sets
+ the _M_index variable.
+ [_GLIBCXX_LONG_DOUBLE_COMPAT]: Call find_ldbl_sync_facet to detect
+ facets that share another facet's ID.
+ [_GLIBCXX_LONG_DOUBLE_COMPAT] (find_ldbl_sync_facet): New function.
+
+ PR libstdc++/78552
+ * src/c++98/locale_init.cc (locale::classic()): Do not construct a new
+ locale object for every call.
+ (locale::_S_initialize_once()): Construct C locale here.
+
+2019-10-08 Jonathan Wakely <jwakely@redhat.com>
+
+ * doc/Makefile.am (doc-html-docbook-regenerate): New target.
+ (${docbook_outdir}/html): Do not create unused 'html/ext' directory.
+ * doc/Makefile.in: Regenerate.
+ * doc/xml/manual/documentation_hacking.xml: Document new target.
+ * doc/html/*: Regenerate.
+
+ * doc/xml/manual/allocator.xml: Use archived copy of CUJ article.
+ * doc/html/*: Regenerate.
+
+2019-10-06 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/bits/stl_algo.h
+ (__copy_n_a(_IIte, _Size, _OIte)): New.
+ (__copy_n_a(istreambuf_iterator<>, _Size, _CharT*)): New declaration.
+ (__copy_n(_IIte, _Size, _OIte, input_iterator_tag)): Adapt to use
+ latter.
+ * include/bits/streambuf_iterator.h (istreambuf_iterator<>): Declare
+ std::__copy_n_a friend.
+ (__copy_n_a(istreambuf_iterator<>, _Size, _CharT*)): New.
+ * testsuite/25_algorithms/copy_n/istreambuf_iterator/1.cc: New.
+ * testsuite/25_algorithms/copy_n/istreambuf_iterator/1_neg.cc: New.
+ * testsuite/25_algorithms/copy_n/istreambuf_iterator/2_neg.cc: New.
+
+ * include/bits/stl_iterator_base_types.h (__iterator_category_t): Define
+ for C++11.
+ (_RequireInputIte): Likewise and use __enable_if_t.
+ * include/std/numeric
+ (__is_random_access_iter): Use __iterator_category_t.
+
+ * include/bits/stl_algo.h (copy_n): Add __glibcxx_requires_can_increment
+ debug checks.
+ * testsuite/25_algorithms/copy_n/debug/1_neg.cc: New.
+ * testsuite/25_algorithms/copy_n/debug/2_neg.cc: New.
+
+2019-10-04 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/debug/forward_list
+ (_Sequence_traits<__debug::forward_list<>>::_S_size): Returns __dp_sign
+ distance when not empty.
+ * include/debug/list (_Sequence_traits<__debug::list<>>::_S_size):
+ Likewise.
+ * include/debug/helper_functions.h (__dp_sign_max_size): New
+ _Distance_precision enum entry.
+ (__valid_range_aux(_IIte, _IIte, _Distance_traits<>::__type,
+ __false_type)): Adapt.
+ * include/debug/safe_iterator.tcc
+ (_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator&)): Review
+ distance computation.
+
2019-10-04 Jonathan Wakely <jwakely@redhat.com>
+ PR libstdc++/81091
+ PR libstdc++/91947
+ * configure.ac: Use AC_SYS_LARGEFILE to enable 64-bit file APIs.
+ * config.h.in: Regenerate:
+ * configure: Regenerate:
+ * include/Makefile.am (${host_builddir}/largefile-config.h): New
+ target to generate config header for filesystem library.
+ (${host_builddir}/c++config.h): Rename macros for large file support.
+ * include/Makefile.in: Regenerate.
+ * src/c++17/fs_dir.cc: Include new config header.
+ * src/c++17/fs_ops.cc: Likewise.
+ (filesystem::file_size): Use uintmax_t for size.
+ * src/filesystem/dir.cc: Include new config header.
+ * src/filesystem/ops.cc: Likewise.
+ (experimental::filesystem::file_size): Use uintmax_t for size.
+
* testsuite/util/testsuite_abi.h: Use std::unordered_map instead of
std::tr1::unordered_map.
* testsuite/util/testsuite_allocator.h: Likewise.