+2018-06-18 Jonathan Wakely <jwakely@redhat.com>
+
+ LWG 2989 hide path iostream operators from normal lookup
+ * include/bits/fs_path.h (operator<<, operator>>): Define inline as
+ friends.
+ * testsuite/27_io/filesystem/path/io/dr2989.cc: New.
+
+ LWG 3050 Fix cv-qualification of convertibility constraints
+ * include/std/chrono (duration, operator*, operator/, operator%): Use
+ const-qualified type as source type in is_convertible constraints.
+ * testsuite/20_util/duration/arithmetic/dr3050.cc: New.
+ * testsuite/20_util/duration/cons/dr3050.cc: New.
+ * testsuite/20_util/duration/literals/range.cc: Rename to...
+ * testsuite/20_util/duration/literals/range_neg.cc: Here. Adjust
+ dg-error lineno.
+
+2018-06-18 Maya Rashish <coypu@sdf.org>
+
+ * crossconfig.m4: Handle OpenBSD just like NetBSD.
+ * configure: Rebuilt.
+
+2018-06-18 Jonathan Wakely <jwakely@redhat.com>
+
+ P0754R2 <version> header
+ * include/Makefile.am: Add new header.
+ * include/Makefile.in: Regenerate.
+ * include/bits/c++config: Change doxygen comment to suggest <version>
+ instead of <iosfwd>.
+ * include/precompiled/stdc++.h: Include <cwchar> and <cwctype>
+ unconditionally. Add C++17 and C++20 headers.
+ * include/std/version: New header.
+ * testsuite/17_intro/headers/c++2017/all_attributes.cc: New.
+ * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: New.
+ * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: New.
+ * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: New.
+ * testsuite/17_intro/headers/c++2017/operator_names.cc: New.
+ * testsuite/17_intro/headers/c++2017/stdc++.cc: New.
+ * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
+ New.
+ * testsuite/17_intro/headers/c++2020/all_attributes.cc: New.
+ * testsuite/17_intro/headers/c++2020/all_no_exceptions.cc: New.
+ * testsuite/17_intro/headers/c++2020/all_no_rtti.cc: New.
+ * testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc: New.
+ * testsuite/17_intro/headers/c++2020/operator_names.cc: New.
+ * testsuite/17_intro/headers/c++2020/stdc++.cc: New.
+ * testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc:
+ New.
+ * testsuite/18_support/headers/version/macros.cc: New.
+ * testsuite/18_support/headers/version/macros.cc: New.
+
+ * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Only check when
+ enable_libstdcxx_filesystem_ts = yes. Check for link, readlink and
+ symlink.
+ * config.h.in: Regenerate.
+ * configure: Regenerate.
+ * configure.ac: Remove AC_CHECK_FUNCS for link, readlink and symlink.
+
+ LWG 3035. std::allocator's constructors should be constexpr
+ * include/bits/allocator.h (allocator): Add constexpr to constructors
+ for C++2a. Replace dynamic exception specifications with NOTHROW
+ macro.
+ (allocator, operator==, operator!=): Replace USE_NOEXCEPT macro with
+ NOTHROW.
+ * include/bits/c++config (_GLIBCXX20_CONSTEXPR): Define.
+ * include/ext/malloc_allocator.h (malloc_allocator): Add constexpr
+ to constructors for C++2a.
+ * include/ext/new_allocator.h (new_allocator): Likewise.
+
+2018-06-16 Jonathan Wakely <jwakely@redhat.com>
+
+ LWG 3076 basic_string CTAD ambiguity
+ * doc/xml/manual/intro.xml: Document LWG 3076 change.
+ * include/bits/basic_string.h
+ [__cpp_deduction_guides && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
+ (basic_string(const _CharT*, const _Alloc&)): Turn into a function
+ template constrained by _RequireAllocator.
+ (basic_string(size_type, _CharT, const _Alloc&)): Likewise.
+ * src/c++11/string-inst.cc (_GLIBCXX_DEFINING_STRING_INSTANTIATIONS):
+ Define.
+ * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
+ deduction
+ * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
+ Likewise.
+
+2018-06-15 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/86169
+ * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
+ (basic_string::data()): Unshare string.
+ * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
+ New.
+
+ * include/std/string_view (basic_string_view(const CharT*)): Remove
+ check for null pointer and add nonnull attribute.
+ (compare(const CharT*), compare(size_type, size_type, const CharT*))
+ (find(const CharT*, size_type), rfind(const CharT*, size_type))
+ (find_first_of(const CharT*, size_type))
+ (find_last_of(const CharT*, size_type))
+ (find_first_not_of(const CharT*, size_type))
+ (find_last_not_of(const CharT*, size_type)): Add nonnull attribute.
+ * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: New.
+ * testsuite/21_strings/basic_string_view/operations/compare/char/
+ nonnull.cc: New.
+ * testsuite/21_strings/basic_string_view/operations/find/char/
+ nonnull.cc: New.
+ * testsuite/21_strings/basic_string_view/operations/rfind/char/
+ nonnull.cc: New.
+
+ PR libstdc++/86168
+ * include/bits/random.h (random_device(const string&)): Remove
+ default argument.
+
+ * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only
+ define for C++17 and above.
+
+ LWG 2993 reference_wrapper<T> conversion from T&&
+ * doc/xml/manual/intro.xml: Document LWG 2993 change.
+ * include/bits/refwrap.h (reference_wrapper(_Tp&)): Remove.
+ (reference_wrapper(_Tp&&)): Remove.
+ (reference_wrapper<_Up>(_Up&&)): Define new constructor as constrained
+ template.
+ (reference_wrapper): Add deduction guide.
+ * testsuite/20_util/reference_wrapper/deduction.cc: New.
+ * testsuite/20_util/reference_wrapper/lwg2993.cc: New.
+
+ LWG 3039 Unnecessary decay in thread and packaged_task
+ * include/std/future (__constrain_pkgdtask): Replace with ...
+ (packaged_task::__not_same): New alias template, using
+ __remove_cvref_t instead of decay.
+ * include/std/thread (thread::__not_same): Add comment.
+
+2018-06-14 Jonathan Wakely <jwakely@redhat.com>
+
+ LWG 3075 basic_string needs deduction guides from basic_string_view
+ * testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
+ deduction from string views.
+ * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
+ Likewise.
+
+ LWG 3074 make scalar types non-deduced in valarray non-member functions
+ * include/bits/valarray_after.h (_DEFINE_EXPR_BINARY_FUNCTION): Change
+ scalar parameters to be a non-deduced context.
+ * include/std/valarray (_DEFINE_BINARY_OPERATOR): Likewise. Adjust
+ whitespace.
+ * testsuite/26_numerics/valarray/operators.cc: Test scalar operands.
+ * testsuite/26_numerics/valarray/transcend.cc: New.
+
+ * include/std/tuple (__cpp_lib_tuple_element_t, tuple_element_t):
+ Move back to <utility>.
+ * include/std/utility (__cpp_lib_tuple_element_t. tuple_element_t):
+ Restore to here.
+
+ P0935R0 Eradicating unnecessarily explicit default constructors
+ * include/backward/strstream (strstreambuf): Add non-explicit default
+ constructor.
+ * include/bits/locale_conv.h (wbuffer_convert, wstring_convert):
+ Likewise.
+ * include/bits/regex.h (match_results): Likewise.
+ * testsuite/22_locale/conversions/buffer/1.cc: Test for non-explicit
+ default constructor.
+ * testsuite/22_locale/conversions/string/1.cc: Likewise.
+ * testsuite/28_regex/match_results/ctors/char/default.cc: Likewise.
+ * testsuite/28_regex/match_results/ctors/wchar_t/default.cc: Likewise.
+
+ * include/std/tuple (__cpp_lib_tuple_element_t): Move feature test
+ macro from <utility> and change type to long.
+ * include/std/utility (__cpp_lib_tuple_element_t): Remove.
+ * testsuite/20_util/tuple/tuple_element_t.cc: Check for feature test
+ macro.
+
+ P0935R0 Eradicating unnecessarily explicit default constructors
+ * include/bits/random.h (uniform_real_distribution::param_type)
+ (normal_distribution::param_type, lognormal_distribution::param_type)
+ (gamma_distribution::param_type, chi_squared_distribution::param_type)
+ (cauchy_distribution::param_type, fisher_f_distribution::param_type)
+ (student_t_distribution::param_type)
+ (bernoulli_distribution::param_type)
+ (binomial_distribution::param_type)
+ (geometric_distribution::param_type)
+ (negative_binomial_distribution::param_type)
+ (poisson_distribution::param_type)
+ (exponential_distribution::param_type)
+ (weibull_distribution::param_type)
+ (extreme_value_distribution::param_type): Add non-explicit default
+ constructors. Remove default argument for first parameter of explicit
+ constructors.
+ * include/bits/uniform_int_dist.h
+ (uniform_int_distribution::param_type): Likewise.
+ * include/ext/random
+ (beta_distribution::param_type, rice_distribution::param_type)
+ (nakagami_distribution::param_type, pareto_distribution::param_type)
+ (k_distribution::param_type, arcsine_distribution::param_type)
+ (hoyt_distribution::param_type, triangular_distribution::param_type)
+ (von_mises_distribution::param_type)
+ (hypergeometric_distribution::param_type)
+ (logistic_distribution::param_type)
+ (uniform_inside_sphere_distribution::param_type): Likewise.
+ (uniform_on_sphere_distribution::param_type): Make default constructor
+ non-explicit.
+ * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
+ Test param_type for non-explicit default constructor.
+ * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/triangular_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/ext/random/von_mises_distribution/cons/default.cc:
+ Likewise.
+
+2018-06-14 Daniel Trebbien <dtrebbien@gmail.com>
+ Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/83982
+ * include/bits/vector.tcc (vector::_M_default_append(size_type)):
+ Default-construct new elements before moving existing ones.
+ * testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc:
+ New.
+
+2018-06-13 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/86127
+ * include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove
+ unused typedef.
+ (_Fwd_list_base::_M_create_node, _Fwd_list_base::_M_erase_after):
+ Use node allocator to create and destroy elements.
+ (forward_list::_Tp_alloc_type): Remove unused typedef.
+ (forward_list::_Alloc_traits): Use allocator_traits instead of
+ __gnu_cxx::__alloc_traits.
+
+2018-06-13 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/debug/helper_functions.h
+ (__gnu_debug::_Safe_iterator<>): Add declaration.
+ (__can_advance(_Ite, _Size)): New.
+ (__can_advance(const _Safe_iterator<>&, _Size)): Overload declaration.
+ * include/debug/functions.h
+ (__gnu_debug::_Safe_iterator<>): Remove declaration.
+ * include/debug/stl_iterator.h
+ (__can_advance(const _Safe_iterator<>&)): New definition.
+ * include/debug/stl_iterator.h
+ (__can_advance(const std::reverse_iterator<>&, _Size)): New.
+ (__can_advance(const std::move_iterator<>&, _Size)): New.
+ * include/debug/macros.h (__glibcxx_check_can_increment): New.
+ * include/debug/debug.h (__glibcxx_requires_can_increment): New.
+ * include/bits/stl_algobase.h (fill_n): Use latter.
+ * testsuite/25_algorithms/fill_n/2.cc: New.
+ * testsuite/25_algorithms/fill_n/debug/1_neg.cc: New.
+ * testsuite/25_algorithms/fill_n/debug/2_neg.cc: New.
+ * testsuite/25_algorithms/fill_n/debug/3_neg.cc: New.
+ * testsuite/25_algorithms/fill_n/debug/4_neg.cc: New.
+
+ * include/debug/debug.h (__glibcxx_requires_can_increment_range): New.
+ (__glibcxx_requires_can_decrement_range): New.
+
+2018-06-12 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/debug/macros.h (__glibcxx_check_can_increment_range): New.
+ (__glibcxx_check_can_decrement_range): New.
+ * include/bits/stl_algobase.h (std::copy(_II, _II, _OI)): Use
+ __glibcxx_requires_can_increment_range.
+ (std::move(_II, _II, _OI)): Likewise.
+ (std::copy_backward(_BI, _BI, _BI2)): Use
+ __glibcxx_requires_can_decrement_range.
+ (std::move_backward(_BI, _BI, _BI2)): Likewise.
+ * testsuite/25_algorithms/copy_backward/debug/1_neg.cc: New.
+ * testsuite/25_algorithms/copy_backward/debug/2_neg.cc: New.
+ * testsuite/25_algorithms/copy_backward/debug/3_neg.cc: New.
+ * testsuite/25_algorithms/equal/debug/1_neg.cc: New.
+ * testsuite/25_algorithms/equal/debug/2_neg.cc: New.
+ * testsuite/25_algorithms/equal/debug/3_neg.cc: New.
+
+2018-06-12 Jonathan Wakely <jwakely@redhat.com>
+
+ P0935R0 Eradicating unnecessarily explicit default constructors
+ * include/bits/random.h (linear_congruential_engine)
+ (mersenne_twister_engine, subtract_with_carry_engine, random_device)
+ (uniform_real_distribution, normal_distribution)
+ (lognormal_distribution, gamma_distribution, chi_squared_distribution)
+ (cauchy_distribution, fisher_f_distribution, student_t_distribution)
+ (bernoulli_distribution, binomial_distribution,geometric_distribution)
+ (negative_binomial_distribution, exponential_distribution)
+ (weibull_distribution, extreme_value_distribution): Add non-explicit
+ default constructors. Remove default argument for first parameter of
+ explicit constructors.
+ (piecewise_constant_distribution, piecewise_linear_distribution):
+ Make default constructor non-explicit.
+ * include/bits/uniform_int_dist.h (uniform_int_distribution): Add
+ non-explicit default constructors. Remove default argument for first
+ parameter of explicit constructor.
+ * include/ext/random
+ (simd_fast_mersenne_twister_engine, beta_distribution)
+ (rice_distribution, nakagami_distribution, pareto_distribution)
+ (k_distribution, arcsine_distribution, hoyt_distribution)
+ (triangular_distribution, von_mises_distribution)
+ (hypergeometric_distribution, logistic_distribution)
+ (uniform_inside_sphere_distribution): Likewise.
+ (uniform_on_sphere_distribution): Make default constructor
+ non-explicit.
+ * testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc:
+ Test for non-explicit default constructor. Fix references to standard.
+ * testsuite/26_numerics/random/binomial_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/discrete_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/gamma_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/geometric_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/lognormal_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/normal_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/poisson_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/26_numerics/random/weibull_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/ext/random/arcsine_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/beta_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/hoyt_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/hypergeometric_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/ext/random/k_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/logistic_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/nakagami_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/normal_mv_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/ext/random/pareto_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/rice_distribution/cons/default.cc: Likewise.
+ * testsuite/ext/random/triangular_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/ext/random/von_mises_distribution/cons/default.cc:
+ Likewise.
+ * testsuite/util/testsuite_common_types.h
+ (implicitly_default_constructible): New helper.
+
+2018-06-08 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/ios_base.h (ios::Init::Init(const Init&))
+ (ios::Init::operator=): Define as defaulted.
+ * include/bits/stl_bvector.h (_Bit_reference(const _Bit_reference&)):
+ Likewise.
+ * include/bits/stream_iterator.h (istream_iterator::operator=)
+ (ostream_iterator::operator=): Likewise.
+ * include/bits/streambuf_iterator.h (istreambuf_iterator::operator=)
+ Likewise.
+ * include/std/bitset (bitset::reference::reference(const reference&)):
+ Likewise.
+ * include/std/complex (complex<float>::complex(const complex&))
+ (complex<double>::complex(const complex&))
+ (complex<long double>::complex(const complex&)): Likewise.
+
+2018-06-07 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/regex.h (sub_match): Add noexcept to default
+ constructor and length observer.
+ (match_results): Add noexcept to default constructor and observers
+ with no preconditions. Define destructor as defaulted.
+ (operator==, operator!=, swap): Add noexcept.
+ (regex_iterator): Add default member initializers and define default
+ constructor and destructor as defaulted. Add noexcept to equality
+ and dereference operators.
+
+2018-06-07 François Dumont <fdumont@gcc.gnu.org>
+
+ * src/c++11/debug.cc
+ (_Safe_iterator_base::_M_detach()): Reset state only if needed.
+ (_Safe_iterator_base::_M_detach_single()): Likewise.
+ (_Safe_local_iterator_base::_M_detach()): Reset state only if needed.
+ (_Safe_local_iterator_base::_M_detach_single()): Likewise.
+
+2018-06-06 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/shared_ptr_base.h (__shared_count): Remove redundant
+ move of const value.
+
+2018-06-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/86068
+ * include/bits/c++config: Check __cpp_transactional_memory >= 201500L
+ rather than __cpp_transactional_memory >= 201505L.
+
+2018-06-06 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/86008
+ * include/bits/quoted_string.h (_Quoted_string<basic_string_view, C>):
+ Define new partial specialization.
+ * include/std/iomanip (quoted(basic_string_view<C,T>, C, C)): Define
+ new overload.
+ (operator<<(basic_ostream<C,T>&, const _Quoted_string<S,C>&)): Use
+ value not reference for iteration.
+ * testsuite/27_io/manipulators/standard/char/quoted.cc: Adjust
+ comment.
+ * testsuite/27_io/manipulators/standard/char/quoted_sv.cc: New test.
+ * testsuite/27_io/manipulators/standard/wchar_t/quoted.cc: Adjust
+ comment.
+
+2018-06-05 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/std/type_traits: Fix comment typos.
+
+ * testsuite/27_io/filesystem/operations/read_symlink.cc: XFAIL for
+ mingw* targets.
+ * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
+ * testsuite/experimental/filesystem/operations/read_symlink.cc:
+ Likewise.
+
+2018-06-05 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/bits/stl_tempbuf.h
+ (_Temporary_buffer(_FwdIte, _FwdIte)): Delete, replaced by...
+ (_Temporary_buffer(_FwdIte, size_type)): ...this, new.
+ * include/ext/memory (temporary_buffer<>(_FwdIte, _FwdIte)): Adapt.
+ * include/bits/stl_algo.h (__stable_partition): Adapt.
+ (__inplace_merge): Adapt.
+ (__stable_sort): Adapt.
+
+2018-06-04 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/85930
+ * include/bits/shared_ptr_base.h [!__cpp_rtti]: Include <typeinfo>
+ unconditionally. Remove redundant declaration.
+ [!__cpp_rtti] (_Sp_make_shared_tag::_S_ti): Fix location of
+ alignment-specifier.
+
+ * include/bits/postypes.h (fpos): Define special members as defaulted.
+
+ PR libstdc++/85930
+ * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Align
+ the static variable correctly.
+
+2018-05-24 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/78870 support std::filesystem on Windows
+ * config.h.in: Regenerate.
+ * configure: Regenerate.
+ * configure.ac: Check for link, readlink and symlink.
+ * include/bits/fs_path.h (path::operator/=(const path&)): Move
+ definition out of class body.
+ (path::is_absolute(), path::_M_append(path)): Likewise.
+ (operator<<(basic_ostream, const path&)): Use std::quoted directly.
+ (operator>>(basic_istream, path&)): Likewise.
+ (u8path): Reorder definitions and fix Windows implementation.
+ (path::is_absolute()): Define inline and fix for Windows.
+ [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
+ Define POSIX version inline.
+ (path::_M_append(path)): Define inline.
+ * include/experimental/bits/fs_path.h (path::is_absolute()): Move
+ definition out of class body.
+ (operator<<(basic_ostream, const path&)): Fix type of delimiter and
+ escape characters.
+ (operator>>(basic_istream, path&)): Likewise.
+ (path::is_absolute()): Define inline and fix for Windows.
+ * src/filesystem/dir-common.h (__gnu_posix): New namespace.
+ (__gnu_posix::char_type, __gnu_posix::DIR, __gnu_posix::dirent)
+ (__gnu_posix::opendir, __gnu_posix::readdir, __gnu_posix::closedir):
+ Define as adaptors for Windows functions/types or as
+ using-declarations for POSIX functions/types.
+ (_Dir_base, get_file_type): Qualify names to use declarations from
+ __gnu_posix namespace.
+ (_Dir_base::is_dor_or_dotdot): New helper functions.
+ * src/filesystem/dir.cc (_Dir, recursive_directory_iterator): Qualify
+ names to use declarations from __gnu_posix namespace.
+ * src/filesystem/ops-common.h (__gnu_posix): New nested namespace.
+ (__gnu_posix::open, __gnu_posix::close, __gnu_posix::stat_type)
+ (__gnu_posix::stat, __gnu_posix::lstat, __gnu_posix::mode_t)
+ (__gnu_posix::chmod, __gnu_posix::mkdir, __gnu_posix::getcwd)
+ (__gnu_posix::chdir, __gnu_posix::utimbuf, __gnu_posix::utime)
+ (__gnu_posix::rename, __gnu_posix::truncate, __gnu_posix::char_type):
+ Define as adaptors for Windows functions/types or as
+ using-declarations for POSIX functions/types.
+ (stat_type, do_copy_file): Qualify names to use declarations from
+ __gnu_posix namespace.
+ (do_space): Declare new function.
+ (make_file_type): Only use S_ISLNK if defined.
+ * src/filesystem/ops.cc (char_ptr, filesystem::canonical): Use
+ path::value_type not char.
+ (filesystem::copy, create_dir, filesystem::create_directory): Qualify
+ names to use declarations from __gnu_posix namespace.
+ (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
+ add implementation for Windows.
+ (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
+ (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
+ [!_PC_PATH_MAX]: Don't use pathconf.
+ [PATH_MAX]: Use if defined.
+ (filesystem::current_path(const path&, error_code&))
+ (filesystem::equivalent, do_stat, filesystem::hard_link_count)
+ (filesystem::last_write_time, filesystem::permissions): Use names
+ from __gnu_posix.
+ (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
+ (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
+ implementation for Windows.
+ (filesystem::rename, filesystem::resize_file): Use names from
+ __gnu_posix.
+ (filesystem::space): Use do_space.
+ [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Get absolute path to directory.
+ (filesystem::status, filesystem::symlink_status): Use names from
+ __gnu_posix.
+ (filesystem::temp_directory_path): Add implementation for Windows.
+ * src/filesystem/path.cc (dot): Define constant.
+ (path::replace_extension): Use dot.
+ (path::_M_find_extension): Likewise. Use path::string_type not
+ std::string.
+ (path::_M_split_cmpts): Use dot.
+ (filesystem_error::_M_get_what): Use u8string() not native().
+ * src/filesystem/std-dir.cc (_Dir, recursive_directory_iterator):
+ Qualify names to use declarations from __gnu_posix namespace.
+ * src/filesystem/std-ops.cc (filesystem::absolute(const path&)): Use
+ correct error_code.
+ (filesystem::absolute(const path&, error_code&)): Add implementation
+ for Windows.
+ (char_ptr, filesystem::canonical): Use path::value_type not char.
+ (do_copy_file): Use names from __gnu_posix.
+ [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Do not use fchmod, fchmodat or
+ sendfile.
+ (filesystem::copy, create_dir, filesystem::create_directory): Qualify
+ names to use declarations from __gnu_posix namespace.
+ (filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
+ add implementation for Windows.
+ (filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
+ (filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
+ [!_PC_PATH_MAX]: Don't use pathconf.
+ [PATH_MAX]: Use if defined.
+ (filesystem::current_path(const path&, error_code&))
+ (filesystem::equivalent, do_stat, filesystem::hard_link_count)
+ (filesystem::last_write_time, filesystem::permissions): Use names
+ from __gnu_posix.
+ (filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
+ (filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
+ implementation for Windows.
+ (filesystem::rename, filesystem::resize_file): Use names from
+ __gnu_posix.
+ (do_space): Define.
+ (filesystem::space): Use do_space.
+ (filesystem::status, filesystem::symlink_status): Use names from
+ __gnu_posix.
+ (filesystem::temp_directory_path): Add implementation for Windows.
+ * src/filesystem/std-path.cc
+ [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
+ Define for Windows.
+ (dot): Define constant.
+ (path::replace_extension, is_dot): Use dot.
+ (path::lexically_normal): Check _M_type instead of calling
+ non-existent function.
+ (path::_M_find_extension): Use dot. Use path::string_type not
+ std::string.
+ (path::_M_split_cmpts): Use dot.
+ (filesystem_error::_M_get_what): Use u8string() not native().
+ * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Do not
+ use symlinks.
+ * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
+ Likewise.
+ * testsuite/27_io/filesystem/operations/absolute.cc: Use
+ __gnu_test::root_path() instead of "/" and add Windows-specific tests.
+ * testsuite/27_io/filesystem/operations/canonical.cc: Use
+ path::string() to get narrow string, not path::native().
+ * testsuite/27_io/filesystem/operations/copy.cc: Construct fstreams
+ with std::filesystem::path not std::basic_string.
+ * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
+ * testsuite/27_io/filesystem/operations/exists.cc: Use
+ __gnu_test::root_path() instead of "/".
+ * testsuite/27_io/filesystem/operations/is_empty.cc: Construct
+ fstreams with std::filesystem::path not std::basic_string.
+ * testsuite/27_io/filesystem/operations/last_write_time.cc: Use
+ path::string() to get narrow string.
+ * testsuite/27_io/filesystem/operations/space.cc: Check results for
+ errors, expect sensible values otherwise.
+ * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Add
+ helpers for adjusting the environment on Windows.
+ * testsuite/27_io/filesystem/path/append/path.cc: Test
+ Windows-specific behaviour.
+ * testsuite/27_io/filesystem/path/construct/format.cc: Fix creation
+ of path::string_type objects.
+ * testsuite/27_io/filesystem/path/construct/locale.cc: Compare native
+ string to wide string on Windows.
+ * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Allow
+ for backslash as root-directory.
+ * testsuite/27_io/filesystem/path/decompose/stem.cc: Use
+ path::string() to get narrow string.
+ * testsuite/27_io/filesystem/path/itr/traversal.cc: Test Windows-style
+ paths.
+ * testsuite/27_io/filesystem/path/native/string.cc: Use string_type
+ not std::string.
+ * testsuite/27_io/filesystem/path/query/is_absolute.cc: Adjust for
+ different definintion of absolute paths on Windows.
+ * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
+ Do not use symlinks.
+ * testsuite/experimental/filesystem/operations/absolute.cc: Test
+ Windows behaviour.
+ * testsuite/experimental/filesystem/operations/copy.cc: Construct
+ fstreams with NTCTS not std::basic_string.
+ * testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
+ * testsuite/experimental/filesystem/operations/exists.cc: Use
+ __gnu_test::root_path() instead of "/".
+ * testsuite/experimental/filesystem/operations/is_empty.cc: Construct
+ fstreams with NTCTS not std::basic_string.
+ * testsuite/experimental/filesystem/operations/last_write_time.cc:
+ Use path::string() to get narrow string.
+ * testsuite/experimental/filesystem/operations/space.cc: Use
+ __gnu_test::root_path() instead of "/".
+ * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
+ Add helpers for adjusting the environment on Windows.
+ * testsuite/experimental/filesystem/path/append/path.cc: Use
+ path::string() to get narrow strings for comparisons.
+ * testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
+ * testsuite/experimental/filesystem/path/decompose/root_directory.cc:
+ Likewise.
+ * testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
+ * testsuite/experimental/filesystem/path/native/string.cc: Use
+ string_type not std::string.
+ * testsuite/experimental/filesystem/path/query/is_absolute.cc:
+ Adjust for different definintion of absolute paths on Windows.
+ * testsuite/util/testsuite_fs.h (__gnu_test::root_path()): New
+ function.
+ (__gnu_test::scoped_file): Construct fstreams with NTCTS not
+ std::basic_string.
+
+2018-05-31 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/85951
+ * include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define
+ uint_least16_t and uint_least32_t.
+ (__make_unsigned<wchar_t>): Define unconditionally.
+ (__make_unsigned_selector<_Tp, true, false>): Remove intermediate
+ typedefs.
+ (__make_unsigned_selector_base): New type to provide helper templates.
+ (__make_unsigned_selector<_Tp, false, true>): Reimplement using
+ __make_unsigned_selector_base helpers.
+ (__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define.
+ (__make_signed_selector<_Tp, true, false>): Remove intermediate
+ typedefs.
+ (__make_signed<wchar_t>, __make_signed<char16_t>)
+ (__make_signed<char32_t>)): Define unconditionally.
+ * testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check
+ wchar_t, char16_t and char32_t are transformed correctly.
+ * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
+ dg-error lineno.
+ * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check
+ wchar_t, char16_t and char32_t are transformed correctly.
+ * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
+ dg-error lineno.
+
+2018-05-29 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/std/variant (__erased_dtor): Qualify call to __get.
+
+2018-05-27 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/bits/stl_tree.h (_Rb_tree_impl(_Node_allocator&&)): New.
+ (_Rb_tree(const allocator_type&)): Use latter.
+ * include/bits/stl_map.h (map(const allocator_type&)): Likewise.
+ (map(initializer_list<value_type>, const allocator_type&)): Likewise.
+ (map(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
+ * include/bits/stl_multimap.h
+ (multimap(const allocator_type&)): Likewise.
+ (multimap(initializer_list<value_type>, const allocator_type&)):
+ Likewise.
+ (multimap(_InputIterator, _InputIterator, const allocator_type&)):
+ Likewise.
+ * include/bits/stl_set.h (set(const allocator_type&)): Likewise.
+ (set(initializer_list<value_type>, const allocator_type&)): Likewise.
+ (set(_InputIterator, _InputIterator, const allocator_type&)): Likewise.
+ * include/bits/stl_multiset.h
+ (multiset(const allocator_type&)): Likewise.
+ (multiset(initializer_list<value_type>, const allocator_type&)):
+ Likewise.
+ (multiset(_InputIterator, _InputIterator, const allocator_type&)):
+ Likewise.
+
+2018-05-25 François Dumont <fdumont@gcc.gnu.org>
+
+ PR libstdc++/85768
+ * src/c++11/debug.cc: Remove backtrace usage.
+
+2018-05-24 Maya Rashish <coypu@sdf.org>
+
+ PR target/85904
+ * crossconfig.m4: Test for aligned_alloc on netbsd.
+ * configure: Regenerate.
+
+2018-05-24 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/69769
+ PR libstdc++/85886
+ * include/bits/atomic_base.h (__atomic_base::value_type)
+ (__atomic_base::difference_type): Add new typedefs.
+ * include/std/atomic (atomic<bool>::value_type, atomic<T>::value_type)
+ (atomic<T*>::value_type, atomic<T*>::difference_type): Likewise.
+ (atomic<T*>::operator++, atomic<T*>::operator--)
+ (atomic<T*>::operator+=, atomic<T*>::operator-=)
+ (atomic<T*>::fetch_add, atomic<T*>::fetch_sub): Add static assertion
+ to enforce C++17 requirement on pointer arithmetic.
+ (__atomic_val_t, __atomic_diff_t): New alias templates.
+ (atomic_init, atomic_store_explicit, atomic_exchange_explicit)
+ (atomic_compare_exchange_weak_explicit)
+ (atomic_compare_exchange_strong_explicit, atomic_store)
+ (atomic_exchange, atomic_compare_exchange_weak)
+ (atomic_compare_exchange_strong): Use __atomic_val_t to make
+ scalar parameters be non-deduced contexts.
+ (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
+ (atomic_fetch_add, atomic_fetch_sub): Change first parameter to be
+ atomic instead of __atomic_base, and use __atomic_diff_t for scalar
+ parameters.
+ (atomic_fetch_and_explicit, atomic_fetch_or_explicit)
+ (atomic_fetch_xor_explicit, atomic_fetch_and, atomic_fetch_or)
+ (atomic_fetch_xor): Use __atomic_val_t for scalar parameters.
+ (atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
+ (atomic_fetch_add, atomic_fetch_sub): Remove overloads for atomic
+ address types.
+ * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
+ * testsuite/29_atomics/atomic/69769.cc: New test.
+ * testsuite/29_atomics/atomic/nonmembers.cc: New test.
+ * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
+ Disable test for C++17 and later.
+ * testsuite/29_atomics/atomic/requirements/typedefs.cc: New test.
+ * testsuite/29_atomics/atomic_integral/nonmembers.cc: New test.
+ * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: New
+ test.
+
+2018-05-23 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/fs_path.h (path::__is_encoded_char): Change from class
+ template to alias template.
+ (path::__value_type_is_char): Use remove_const_t.
+ (path:_S_string_from_iter): New helper function.
+ (path::_S_convert(InputIter, __null_terminated))
+ (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
+ Use _S_string_from_iter.
+ (path::string<_CharT, _Allocator>(const _Allocator&)): Allow sharing
+ rep for COW strings.
+ * include/experimental/bits/fs_path.h (path::__is_encoded_char):
+ Change from class template to alias template.
+ (path::__value_type_is_char): Use remove_const.
+ (path:_S_string_from_iter): New helper function.
+ (path::_S_convert(InputIter, __null_terminated))
+ (path::_S_convert_loc(InputIter, __null_terminated, const locale&)):
+ Use _S_string_from_iter.
+ * testsuite/27_io/filesystem/path/append/source.cc: Test appending
+ wide strings.
+ * testsuite/27_io/filesystem/path/concat/strings.cc: Check for exact
+ string equality, not path equivalence.
+ * testsuite/27_io/filesystem/path/construct/format.cc: Check
+ construction from std::string and std::wstring and input iterators.
+ * testsuite/27_io/filesystem/path/construct/locale.cc: Check
+ construction from iterators.
+ * testsuite/experimental/filesystem/path/concat/strings.cc: Check for
+ exact string equality, not path equivalence.
+ * testsuite/experimental/filesystem/path/construct/locale.cc: Check
+ construction from iterators.
+
+ * include/bits/fs_path.h (path::_M_type): Change default member
+ initializer to _Filename.
+ (path::begin): Create past-the-end iterator for empty path.
+ * src/filesystem/std-path.cc (path::remove_filename()): Remove
+ debugging check.
+ (path::has_relative_path()): Return false for empty filenames.
+ (path::_M_split_cmpts): Set _M_type to _Filename for empty paths.
+ Fix offset of empty final component.
+ * testsuite/27_io/filesystem/path/itr/components.cc: New.
+ * testsuite/27_io/filesystem/path/itr/traversal.cc: Add new inputs.
+
+2018-05-21 Jonathan Wakely <jwakely@redhat.com>
+
+ Add support for opening file streams from wide character strings.
+ * config/io/basic_file_stdio.cc [_GLIBCXX_HAVE__WFOPEN]
+ (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
+ Define new overload.
+ * config/io/basic_file_stdio.h [_GLIBCXX_HAVE__WFOPEN]
+ (__basic_file<char>::open(const wchar_t*, ios_base::openmode)):
+ Declare new overload.
+ * configure.ac: Check for _wfopen.
+ * crossconfig.m4: Likewise.
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+ * include/bits/fstream.tcc [_GLIBCXX_HAVE__WFOPEN]
+ (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
+ Define new overload.
+ * include/std/fstream [_GLIBCXX_HAVE__WFOPEN]
+ (basic_filebuf<C,T>::open(const wchar_t*, ios_base::openmode)):
+ Declare new overload.
+ [_GLIBCXX_HAVE__WFOPEN]
+ (basic_ifstream<C,T>::basic_ifstream(const wchar_t*, openmode))
+ (basic_ifstream<C,T>::basic_open(const wchar_t*, openmode))
+ (basic_ofstream<C,T>::basic_ifstream(const wchar_t*, openmode))
+ (basic_ofstream<C,T>::basic_open(const wchar_t*, openmode))
+ (basic_fstream<C,T>::basic_ifstream(const wchar_t*, openmode))
+ (basic_fstream<C,T>::basic_open(const wchar_t*, openmode)): Define
+ new overloads.
+ * testsuite/27_io/basic_filebuf/open/wchar_t/1.cc: New.
+ * testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: New.
+ * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: New.
+ * testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: New.
+ * testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: New.
+ * testsuite/27_io/basic_fstream/cons/wchar_t/1.cc: New.
+ * testsuite/27_io/basic_fstream/open/wchar_t/1.cc: New.
+
+2018-05-21 François Dumont <fdumont@gcc.gnu.org>
+
+ PR libstdc++/85845
+ * include/bits/stl_tree.h
+ (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): Fix noexcept
+ qualification.
+
+2018-05-21 Jonathan Wakely <jwakely@redhat.com>
+
+ * src/filesystem/std-ops.cc (absolute): Report an error for empty
+ paths.
+ (weakly_canonical(const path&)): Do not call canonical on empty path.
+ (weakly_canonical(const path&, error_code&)): Likewise.
+ * testsuite/27_io/filesystem/operations/absolute.cc: Check for errors.
+
+ PR libstdc++/85818
+ * testsuite/experimental/filesystem/path/preferred_separator.cc: Add
+ dg-require-filesystem-ts.
+
+ PR libstdc++/85843
+ * src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Explicitly
+ initialize base class to avoid warnings.
+
+2018-05-19 Jonathan Wakely <jwakely@redhat.com>
+
+ * src/c++11/codecvt.cc (__codecvt_utf8_base<wchar_t>::do_in)
+ [__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set
+ little_endian element in bitmask.
+ * testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests.
+ * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New.
+
+2018-05-18 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/bits/stl_tree.h
+ (_Rb_tree_impl(_Rb_tree_impl&&, _Node_allocator&&)): New.
+ (_Rb_tree(_Rb_tree&&, _Node_allocator&&, true_type)): New, use latter.
+ (_Rb_tree(_Rb_tree&&, _Node_allocator&&, false_type)): New.
+ (_Rb_tree(_Rb_tree&&, _Node_allocator&&)): Adapt, use latters.
+ * include/debug/map.h
+ (map(map&&, const_allocator_type&)): Add noexcept qualitication.
+ * include/debug/multimap.h
+ (multimap(multimap&&, const_allocator_type&)): Likewise.
+ * include/debug/set.h
+ (set(set&&, const_allocator_type&)): Likewise.
+ * include/debug/multiset.h
+ (multiset(multiset&&, const_allocator_type&)): Likewise.
+ * testsuite/23_containers/map/cons/noexcept_default_construct.cc:
+ Add checks.
+ * testsuite/23_containers/map/cons/noexcept_move_construct.cc:
+ Add checks.
+ * testsuite/23_containers/multimap/cons/noexcept_default_construct.cc:
+ Add checks.
+ * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
+ Add checks.
+ * testsuite/23_containers/multiset/cons/noexcept_default_construct.cc:
+ Add checks.
+ * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
+ Add checks.
+ * testsuite/23_containers/set/cons/noexcept_default_construct.cc:
+ Add checks.
+ * testsuite/23_containers/set/cons/noexcept_move_construct.cc:
+ Add checks.
+
+2018-05-18 Jason Merrill <jason@redhat.com>
+
+ * include/bits/stl_deque.h (_Deque_iterator): Constrain constructor
+ for conversion to const_iterator. Add defaulted copy ops.
+ * libsupc++/new (bad_alloc): Add defaulted copy ops.
+ * libsupc++/exception.h (exception): Add defaulted copy ops.
+ * include/std/system_error (system_error): Add defaulted copy ops.
+ * include/std/stdexcept (domain_error, invalid_argument)
+ (length_error, out_of_range, range_error, overflow_error)
+ (underflow_error): Add defaulted copy ops.
+ * include/bits/stl_iterator.h (reverse_iterator): Add defaulted
+ copy assignment.
+ * include/bits/allocator.h (allocator): Add defaulted copy assignment.
+ * include/ext/throw_allocator.h (condition_base): Add defaulted
+ default and copy ctor and copy assignment.
+
+2018-05-18 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/85098
+ * include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase)
+ (basic_regex::nosubs, basic_regex::optimize, basic_regex::collate)
+ (basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended)
+ (basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add
+ definitions.
+ * include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
+ whitespace.
+ * include/bits/regex_compiler.tcc (__INSERT_REGEX_MATCHER): Add
+ braces around body of do-while.
+ * testsuite/28_regex/basic_regex/85098.cc: New
+
+2018-05-17 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/85818
+ * src/filesystem/path.cc (path::preferred_separator): Add used
+ attribute.
+ * testsuite/experimental/filesystem/path/preferred_separator.cc: New.
+
+ PR libstdc++/85812
+ * libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare.
+ * libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]:
+ Refactor to separate non-throwing and throwing implementations.
+ [__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory
+ if constructing the object throws.
+
+2018-05-15 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/85749
+ * include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper.
+ (linear_congruential_engine, mersenne_twister_engine)
+ (subtract_with_carry_engine, discard_block_engine)
+ (independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to
+ constrain function templates taking seed sequences.
+ * include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&))
+ (mersenne_twister_engine::seed(_Sseq&))
+ (subtract_with_carry_engine::seed(_Sseq&)): Change return types to
+ match declarations.
+ * include/ext/random (simd_fast_mersenne_twister_engine): Use
+ __is_seed_seq to constrain function templates taking seed sequences.
+ * include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed):
+ Change return type to match declaration.
+ * testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc:
+ New.
+ * testsuite/26_numerics/random/independent_bits_engine/cons/
+ seed_seq2.cc: New.
+ * testsuite/26_numerics/random/linear_congruential_engine/cons/
+ seed_seq2.cc: New.
+ * testsuite/26_numerics/random/mersenne_twister_engine/cons/
+ seed_seq2.cc: New.
+ * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
+ * testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
+ New.
+ * testsuite/26_numerics/random/subtract_with_carry_engine/cons/
+ seed_seq2.cc: New.
+ * testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
+ seed_seq2.cc: New.
+
+ PR libstdc++/83891
+ * include/bits/fs_path.h (path::is_absolute()): Use same definition
+ for all operating systems.
+ * include/experimental/bits/fs_path.h (path::is_absolute()): Likewise.
+ * testsuite/27_io/filesystem/path/query/is_absolute.cc: New.
+ * testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment.
+ * testsuite/experimental/filesystem/path/query/is_absolute.cc: New.
+
+ * testsuite/27_io/filesystem/path/decompose/extension.cc: Remove
+ unused <vector> header.
+ * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
+ * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
+ * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
+ * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
+ * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
+ Likewise.
+ * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
+ Likewise.
+ * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
+ * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
+ * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
+ * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
+ * testsuite/experimental/filesystem/path/decompose/extension.cc:
+ Likewise.
+ * testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
+ * testsuite/experimental/filesystem/path/query/has_extension.cc:
+ Likewise.
+ * testsuite/experimental/filesystem/path/query/has_filename.cc:
+ Likewise.
+ * testsuite/experimental/filesystem/path/query/has_parent_path.cc:
+ Likewise.
+ * testsuite/experimental/filesystem/path/query/has_relative_path.cc:
+ Likewise.
+ * testsuite/experimental/filesystem/path/query/has_root_directory.cc:
+ Likewise.
+ * testsuite/experimental/filesystem/path/query/has_root_name.cc:
+ Likewise.
+ * testsuite/experimental/filesystem/path/query/has_root_path.cc:
+ Likewise.
+ * testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
+ * testsuite/experimental/filesystem/path/query/is_relative.cc:
+ Likewise.
+
+ PR libstdc++/84159
+ * include/bits/fs_path.h (path::operator/=, path::append): Construct
+ temporary path before calling _M_append.
+ (path::_M_append): Change parameter to path and implement C++17
+ semantics.
+ * testsuite/27_io/filesystem/path/append/path.cc: Add helper function
+ and more examples from the standard.
+ * testsuite/27_io/filesystem/path/append/source.cc: New.
+ * testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment.
+ * testsuite/27_io/filesystem/path/nonmember/append.cc: New.
+
+ * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
+ __invoke to prevent ADL.
+
+2018-05-14 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/81256
+ * include/bits/fstream.tcc (basic_filebuf::close): Do not swallow
+ exceptions from _M_terminate_output().
+ * include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any
+ exceptions from close().
+ * testsuite/27_io/basic_filebuf/close/81256.cc: New.
+
+ * include/bits/valarray_array.h (__valarray_get_memory): Remove.
+ (__valarray_get_storage): Call operator new directly. Remove ignored
+ top-level restrict qualifier and add malloc attribute instead.
+ (_Array<_Tp>::_Array(size_t)): Remove unused constructor.
+
+ PR libstdc++/67554
+ * include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
+ (_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
+
+ PR libstdc++/82966
+ * include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
+ instead of type.
+ * testsuite/23_containers/set/modifiers/node_swap.cc: New.
+
2018-05-13 Ville Voutilainen <ville.voutilainen@gmail.com>
PR libstdc++/80165