2017-05-02  Release Manager

	* GCC 7.1.0 released.

2017-04-19  Jonathan Wakely  <jwakely@redhat.com>

	* doc/xml/manual/abi.xml: Rephrase one of the references to the
	Itanium C++ ABI.
	* doc/xml/manual/test.xml: Document DejaGnu 1.5.3 requirement.
	* doc/html/*: Regenerate.

	* libsupc++/new: Update comment on #endif directive.

	PR libstdc++/80448
	* include/experimental/bits/fs_dir.h (directory_iterator)
	(recursive_directory_iterator): Remove noexcept from defaulted
	constructors.

	PR libstdc++/80446
	* include/std/type_traits (is_aggregate): Change __has_builtin checks.
	* libsupc++/new (launder): Likewise.

2017-04-18  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/functional (default_searcher, __boyer_moore_array_base)
	(__is_std_equal_to, __boyer_moore_base_t, boyer_moore_searcher)
	(boyer_moore_horspool_searcher): Remove redundant namespace
	qualification.
	(default_searcher::operator()): Construct return value early and
	advance second member in-place.
	(boyer_moore_horspool_searcher::operator()): Increment random access
	iterator directly instead of using std::next.
	(boyer_moore_searcher::operator()): Fix return value.
	* testsuite/20_util/function_objects/searchers.cc: Check both parts
	of return values.

2017-04-12  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/faq.xml: Update reference link to C++ ABI for Itanium.
	* doc/xml/manual/abi.xml. Ditto (thrice).

2017-04-03  Jonathan Wakely  <jwakely@redhat.com>

	* doc/xml/manual/status_cxx2017.xml: Remove duplicate table entry.
	* doc/html/*: Regenerate.

	* testsuite/20_util/reference_wrapper/invoke.cc: Uncomment tests
	that no longer fail.

	* include/bits/ios_base.h: Correct comment.
	* testsuite/util/testsuite_hooks.h: Likewise.

	* doc/xml/manual/status_cxx2017.xml: Update C++17 status table.
	* doc/xml/manual/appendix_contributing.xml (contrib.organization): Add
	directories for debug, parallel and profile headers.
	* doc/html/*: Regenerate.

	* include/bits/char_traits.h (__gnu_cxx::char_traits): Add
	_GLIBCXX14_CONSTEXPR on assign, compare, find, and length.
	(std::char_traits<char>, std::char_traits<wchar_t>): Add
	_GLIBCXX17_CONSTEXPR on assign.
	(std::char_traits<char16_t>, std::char_traits<char32_t>): Add
	_GLIBCXX17_CONSTEXPR on assign, compare, find, and length.
	* testsuite/21_strings/char_traits/requirements/
	constexpr_functions_c++17.cc: New test.

2017-04-03  Ville Voutilainen  <ville.voutilainen@gmail.com>

	PR libstdc++/79141
	* include/bits/stl_pair.h (__nonesuch_no_braces): New.
	(operator=(typename conditional<
	__and_<is_copy_assignable<_T1>,
	is_copy_assignable<_T2>>::value,
	const pair&, const __nonesuch&>::type)): Change __nonesuch
	to __nonesuch_no_braces.
	(operator=(typename conditional<
	__not_<__and_<is_copy_assignable<_T1>,
	is_copy_assignable<_T2>>>::value,
	const pair&, const __nonesuch&>::type)): Likewise.
	(operator=(typename conditional<
	__and_<is_move_assignable<_T1>,
	is_move_assignable<_T2>>::value,
	pair&&, __nonesuch&&>::type)): Likewise.
	* testsuite/20_util/pair/79141.cc: New.

2017-04-03  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement std::is_aggregate.
	* include/std/type_traits (is_aggregate, is_aggregate_v): New.
	* testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
	New.
	* testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
	* testsuite/20_util/is_aggregate/value.cc: Likewise.

2017-03-29  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Adjust optional's pretty printer for LWG 2900.
	* python/libstdcxx/v6/printers.py (StdExpOptionalPrinter.__init__):
	Look at the nested payload in case of non-experimental optional.

2017-03-29  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement LWG 2900, The copy and move constructors
	of optional are not constexpr.
	* include/std/optional (_Optional_payload): New.
	(_Optional_base): Remove the bool parameter.
	(_Optional_base<_Tp, false>): Remove.
	(_Optional_base()): Adjust.
	(_Optional_base(nullopt_t)): Likewise.
	(_Optional_base(in_place_t, _Args&&...)): Likewise.
	(_Optional_base(in_place_t, initializer_list<_Up>, _Args&&...)):
	Likewise.
	(_Optional_base(const _Optional_base&)): Likewise.
	(_Optional_base(_Optional_base&&)): Likewise.
	(operator=(const _Optional_base&)): Likewise.
	(operator=(_Optional_base&&)): Likewise.
	(~_Optional_base()): Remove.
	(_M_is_engaged()): Adjust.
	(_M_get()): Likewise.
	(_M_construct(_Args&&...)): Likewise.
	(_M_destruct()): Likewise.
	(_M_reset()): Likewise.
	(_Optional_base::_Empty_byte): Remove.
	(_Optional_base::_M_empty): Remove.
	(_Optional_base::_M_payload): Adjust.
	* testsuite/20_util/optional/cons/value_neg.cc: Adjust.
	* testsuite/20_util/optional/constexpr/cons/value.cc: Add tests.

2017-03-28  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/80137
	* include/bits/random.tcc (generate_canonical): Use std::nextafter
	or numeric_limits::epsilon() to reduce out-of-range values.
	* testsuite/26_numerics/random/uniform_real_distribution/operators/
	64351.cc: Verify complexity requirement is met.

	* doc/xml/manual/abi.xml: Add xml:id anchor.
	* doc/xml/manual/using.xml (manual.intro.using.macros): Document
	_GLIBCXX_RELEASE. Link to new anchor for __GLIBCXX__ notes.
	(concurrency.io.structure): Add markup.
	* doc/html/*: Regenerate.

	PR libstdc++/80229
	* include/bits/shared_ptr_base.h
	(__shared_ptr::_M_enable_shared_from_this_with): Change parameters to
	non-const and then use remove_cv to get unqualified type.
	* testsuite/20_util/enable_shared_from_this/members/const.cc: Don't
	cast away constness on object created const.
	* testsuite/20_util/shared_ptr/cons/80229.cc: New test.

2017-03-26  Markus Trippelsdorf  <markus@trippelsdorf.de>

	PR libstdc++/80183
	* include/bits/stl_tree.h:
	(_Rb_tree_header::_M_move_data(_Rb_tree_header&)): Also save _M_color.

2017-03-23  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/23_containers/array/tuple_interface/
	tuple_element_debug_neg.cc: Adjust dg-error.
	* testsuite/23_containers/list/operations/78389.cc: Fix less-than to
	define a valid strict weak ordering.
	* testsuite/23_containers/priority_queue/67085.cc: Disable test for
	Debug Mode, due to debug checks making extra copies of predicate.
	* testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc:
	Likewise.

	* doc/xml/faq.xml: Add link.
	* doc/xml/manual/backwards_compatibility.xml: Remove outdated
	information on pre-ISO headers. Replace broken link to C++ FAQ Lite.
	* doc/xml/manual/io.xml: Update broken link.
	* doc/html/*: Regenerate.

2017-03-23  Daniel Kruegler  <daniel.kruegler@gmail.com>

	Implement LWG 2686, Why is std::hash specialized for error_code,
	but not error_condition?
	* include/std/system_error (hash<error_condition>): Define for C++17.
	* testsuite/20_util/hash/operators/size_t.cc (hash<error_condition>):
	Instantiate test for error_condition.
	* testsuite/20_util/hash/requirements/explicit_instantiation.cc
	(hash<error_condition>): Instantiate hash<error_condition>.

	* include/bits/c++config (_GLIBCXX17_INLINE): Define.
	* include/bits/regex_constants.h (All std::regex_constants constants):
	Add _GLIBCXX17_INLINE as per P0607R0.
	* include/bits/std_mutex.h (defer_lock, try_to_lock, adopt_lock):
	Likewise.
	* include/bits/stl_pair.h (piecewise_construct): Likewise.
	* include/bits/uses_allocator.h (allocator_arg, uses_allocator_v)
	(__is_uses_allocator_constructible_v)
	(__is_nothrow_uses_allocator_constructible_v): Likewise.
	* include/std/chrono (treat_as_floating_point_v): Likewise.
	* include/std/functional (is_bind_expression_v, is_placeholder_v):
	Likewise.
	* include/std/optional (nullopt): Likewise.
	* include/std/ratio (ratio_equal_v, ratio_not_equal_v, ratio_less_v)
	ratio_less_equal_v, ratio_greater_v, ratio_greater_equal_v): Likewise.
	* include/std/system_error (is_error_code_enum_v)
	(is_error_condition_enum_v): Likewise.
	* include/std/tuple (tuple_size_v, ignore): Likewise.
	(ignore): Declare ignore constexpr as per LWG 2773, declare assignment
	constexpr as per LWG 2933.
	* include/std/type_traits (All variable templates): Add
	_GLIBCXX17_INLINE as per P0607R0.
	* include/std/variant (variant_size_v, variant_npos, __index_of_v)
	(__tuple_count_v, __exactly_once): Likewise.
	* testsuite/18_support/headers/new/synopsis.cc
	(hardware_destructive_interference_size)
	(hardware_constructive_interference_size): Likewise for commented-out
	variables.
	* testsuite/20_util/tuple/creation_functions/constexpr.cc: Add new
	test function for constexpr std::ignore (LWG 2773).
	* testsuite/20_util/tuple/creation_functions/constexpr_cpp14.cc: New
	test for LWG 2933.

2017-03-22  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/shared_ptr.h (shared_ptr, weak_ptr): Add deduction
	guides for C++17.
	* include/bits/std_function.h (function): Likewise.
	* include/bits/stl_pair.h (pair): Likewise.
	* include/debug/array (__gnu_debug::array): Likewise.
	* include/std/array (array): Likewise.
	* include/std/functional (make_default_searcher)
	(make_boyer_moore_searcher, make_boyer_moore_horspool_searcher):
	Remove generator functions.
	* include/std/tuple (tuple): Add deduction guides.
	* include/std/valarray (valarray): Likewise.
	* testsuite/20_util/function_objects/searchers.cc: Adjust to use
	class template argument deduction instead of generator functions.
	* testsuite/20_util/function/cons/deduction.cc: New test.
	* testsuite/20_util/optional/cons/deduction_guide.cc: Rename to ...
	* testsuite/20_util/optional/cons/deduction.cc: ... here.
	* testsuite/20_util/pair/cons/deduction.cc: New test.
	* testsuite/20_util/shared_ptr/cons/deduction.cc: New test.
	* testsuite/20_util/tuple/cons/deduction.cc: New test.
	* testsuite/20_util/tuple/element_access/get_neg.cc: Adjust dg-error.
	* testsuite/20_util/unique_ptr/cons/deduction_neg.cc: New test.
	* testsuite/20_util/weak_ptr/cons/deduction.cc: New test.
	* testsuite/23_containers/array/cons/deduction.cc: New test.
	* testsuite/23_containers/array/cons/deduction_neg.cc: New test.
	* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
	Adjust dg-error.
	* testsuite/23_containers/array/tuple_interface/get_neg.cc: Likewise.
	* testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
	Likewise.
	* testsuite/26_numerics/valarray/deduction.cc: New test.
	* testsuite/30_threads/lock_guard/cons/deduction.cc: New test.
	* testsuite/30_threads/scoped_lock/cons/deduction.cc: New test.
	* testsuite/30_threads/unique_lock/cons/deduction.cc: New test.

2017-03-20  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/stl_deque.h (deque): Access allocator value_type only if
	concept checks are enabled.
	* include/bits/stl_stack.h (stack): Likewise.
	* include/bits/stl_vector.h (vector): Likewise.
	* include/bits/stl_list.h (list): Likewise and check
	_SGIAssignableConcept only in C++03.
	* include/bits/stl_map.h (map): Likewise.
	* include/bits/stl_set.h (set): Likewise.
	* include/bits/stl_multimap.h (multimap): Likewise.
	* include/bits/stl_multiset.h (multiset): Likewise.
	* include/bits/stl_queue.h (queue, priority_queue): Likewise.

2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/appendix_contributing.xml: Convert link to
	ansi.org to https.
	Update link to the C++ standard at ansi.org.

	* doc/xml/faq.xml: Remove information redundant with the above;
	instead add a reference.

2017-03-17  Jonathan Wakely  <jwakely@redhat.com>

	* src/c++11/codecvt.cc (range): Add non-type template parameter and
	define oerloaded operators for reading and writing code units.
	(range<Elem, false>): Define partial specialization for accessing
	wide characters in potentially unaligned byte ranges.
	(ucs2_span(const char16_t*, const char16_t*, ...))
	(ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
	to range<const char16_t, false> in order to avoid unaligned reads.
	(__codecvt_utf16_base<char16_t>::do_out)
	(__codecvt_utf16_base<char32_t>::do_out)
	(__codecvt_utf16_base<wchar_t>::do_out): Use range specialization for
	unaligned data to avoid unaligned writes.
	(__codecvt_utf16_base<char16_t>::do_in)
	(__codecvt_utf16_base<char32_t>::do_in)
	(__codecvt_utf16_base<wchar_t>::do_in): Likewise for writes. Return
	error if there are unprocessable trailing bytes.
	(__codecvt_utf16_base<char16_t>::do_length)
	(__codecvt_utf16_base<char32_t>::do_length)
	(__codecvt_utf16_base<wchar_t>::do_length): Pass arguments of type
	range<const char16_t, false> to span functions.
	* testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.

2017-03-16  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/79980
	* src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type.

	PR libstdc++/80041
	* src/c++11/codecvt.cc (__codecvt_utf16_base<wchar_t>::do_out)
	(__codecvt_utf16_base<wchar_t>::do_in): Convert char arguments to
	char16_t to work with UTF-16 instead of UTF-8.
	* testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.

	* src/c++11/codecvt.cc (codecvt<char16_t, char, mbstate_t>)
	(codecvt<char32_t, char, mbstate_t>, __codecvt_utf8_base<char16_t>)
	(__codecvt_utf8_base<char32_t>, __codecvt_utf8_base<wchar_t>)
	(__codecvt_utf16_base<char16_t>, __codecvt_utf16_base<char32_t>)
	(__codecvt_utf16_base<wchar_t>, __codecvt_utf8_utf16_base<char16_t>)
	(__codecvt_utf8_utf16_base<char32_t>)
	(__codecvt_utf8_utf16_base<wchar_t>): Fix do_encoding() and
	do_max_length() return values.
	* testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
	* testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
	* testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.

	PR libstdc++/79980
	* include/bits/locale_conv.h (__do_str_codecvt): Set __count on
	error path.
	* src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
	for manipulating codecvt_mode values.
	(read_utf16_bom): Compare input to BOM constants instead of integral
	constants that depend on endianness.  Take mode parameter by
	reference and adjust it, to distinguish between no BOM present and
	UTF-16BE BOM present.
	(ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
	(surrogates): New enumeration type.
	(utf16_in, utf16_out): Add surrogates parameter to choose between
	UTF-16 and UCS2 behaviour.
	(utf16_span, ucs2_span): Use std::min not std::max.
	(ucs2_out): Use std::min not std::max.  Disallow surrogate pairs.
	(ucs2_in): Likewise. Adjust calls to read_utf16_bom.
	* testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
	* testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.

	PR libstdc++/79511
	* src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0xffff
	as a surrogate pair.
	(__codecvt_utf8_utf16_base<char32_t>::do_in): Use native endianness
	for internal representation.
	(__codecvt_utf8_utf16_base<wchar_t>::do_in): Likewise.
	* testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.

	PR libstdc++/80064
	* include/bits/stl_heap.h (__is_heap, push_heap, __adjust_heap)
	(pop_heap, make_heap, sort_heap, is_heap_until, is_heap): Cope with
	invalid instantiations using function types for _Compare argument.
	* testsuite/25_algorithms/make_heap/80064.cc: New test.

	PR libstdc++/67440
	* python/libstdcxx/v6/printers.py (find_type): Avoid gdb.Type.name
	for GDB 7.6 compatibility, use gdb.Type.unqualified instead.

2017-03-15  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement LWG 2857, {variant,optional,any}::emplace should
	return the constructed value.
	* include/std/any (emplace(_Args&&...)): Change the return type and
	return a reference to the constructed value.
	(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
	* include/std/optional (emplace(_Args&&...)): Likewise.
	(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
	* include/std/variant (emplace<_Tp>(_Args&&...)): Likewise.
	(emplace<_Tp>(initializer_list<_Up>, _Args&&...)): Likewise.
	(emplace<_Np>(_Args&&...)): Likewise.
	(emplace<_Np>(initializer_list<_Up>, _Args&&...)): Likewise.
	* testsuite/20_util/any/assign/emplace.cc: Add tests for
	checking the return value of emplace.
	* testsuite/20_util/any/misc/any_cast_neg.cc: Adjust.
	* testsuite/20_util/optional/assignment/6.cc: Add tests for
	checking the return value of emplace.
	* testsuite/20_util/variant/run.cc: Likewise.

2017-03-15  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>

	PR libstdc++/62045
	* include/ext/pb_ds/qdetail/binary_heap_/binary_heap_.hpp
	(is_heap): Remove.
	(push_heap): Remove the wrong checking using is_heap.
	(make_heap): Remove the assertion using is_heap.
	* include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
	(modify): Ditto.
	(resize_for_insert_if_needed): Add PB_DS_ASSERT_VALID after
	calling make_heap.

2017-03-15  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/62045
	* testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc:
	New test.
	* testsuite/ext/pb_ds/regression/priority_queues.cc: Fix copy&paste
	error in comment.

2017-03-15  Jonathan Wakely  <jwakely@redhat.com>

	* acinclude.m4 (GLIBCXX_CHECK_S_ISREG_OR_S_IFREG): Fix typo in
	comment.
	* config.h.in: Regenerate.
	* configure: Regenerate.
	* doc/Makefile.in: Regenerate.

2017-03-14  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/79162
	* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
	(basic_string<C,T,A>::operator=(basic_string_view<C,T>)): Replace
	with a constrained template.
	[!_GLIBCXX_USE_CXX11_ABI]
	(basic_string<C,T,A>::operator=(basic_string_view<C,T>)): Likewise.
	* testsuite/21_strings/basic_string/cons/char/79162.cc: New test.
	* testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: New test.

2017-03-13  Ville Voutilainen  <ville.voutilainen@gmail.com>

	PR libstdc++/80034
	* include/bits/list.tcc (merge(list&&)): Use const for the size_t
	in the catch-block.
	(merge(list&&, _StrictWeakOrdering)): Likewise.
	* testsuite/23_containers/list/operations/80034.cc: New.

2017-03-13  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement LWG 2806, Base class of bad_optional_access.
	* include/std/optional (bad_optional_access):
	Derive from std::exception.
	(bad_optional_access::bad_optional_access): Adjust.
	(bad_optional_access::what): New.
	(__throw_bad_optional_access(const char*)):
	Remove the parameter and adjust calls.
	* testsuite/20_util/optional/cons/value_neg.cc: Adjust.
	* testsuite/20_util/optional/typedefs.cc: Likewise.

2017-03-12  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement LWG 2934, optional<const T> doesn't compare with T.
	* include/std/optional
	(operator==(const optional<_Tp>&, const optional<_Tp>&)):
	Turn into operator==(const optional<_Tp>&, const optional<_Up>&).
	(operator!=(const optional<_Tp>&, const optional<_Tp>&)):
	Turn into operator!=(const optional<_Tp>&, const optional<_Up>&).
	(operator<(const optional<_Tp>&, const optional<_Tp>&)):
	Turn into operator<(const optional<_Tp>&, const optional<_Up>&.
	(operator>(const optional<_Tp>&, const optional<_Tp>&)):
	Turn into operator>(const optional<_Tp>&, const optional<_Up>&.
	(operator<=(const optional<_Tp>&, const optional<_Tp>&)):
	Turn into operator<=(const optional<_Tp>&, const optional<_Up>&).
	(operator>=(const optional<_Tp>&, const optional<_Tp>&)):
	Turn into operator>=(const optional<_Tp>&, const optional<_Up>&).
	(operator==(const optional<_Tp>&, const _Tp&)):
	Turn into operator==(const optional<_Tp>&, const _Up&).
	(operator==(const _Tp&, const optional<_Tp>&)):
	Turn into operator==(const _Up&, const optional<_Tp>&).
	(operator!=(const optional<_Tp>&, const _Tp&)):
	Turn into operator!=(const optional<_Tp>&, const _Up&).
	(operator!=(const _Tp&, const optional<_Tp>&)):
	Turn into operator!=(const _Up&, const optional<_Tp>&).
	(operator<(const optional<_Tp>&, const _Tp&)):
	Turn into operator<(const optional<_Tp>&, const _Up&).
	(operator<(const _Tp&, const optional<_Tp>&)):
	Turn into operator<(const _Up&, const optional<_Tp>&).
	(operator>(const optional<_Tp>&, const _Tp&)):
	Turn into operator>(const optional<_Tp>&, const _Up&).
	(operator>(const _Tp&, const optional<_Tp>&)):
	Turn into operator>(const _Up&, const optional<_Tp>&).
	(operator<=(const optional<_Tp>&, const _Tp&)):
	Turn into operator<=(const optional<_Tp>&, const _Up&).
	(operator<=(const _Tp&, const optional<_Tp>&)):
	Turn into operator<=(const _Up&, const optional<_Tp>&).
	(operator>=(const optional<_Tp>&, const _Tp&)):
	Turn into operator>=(const optional<_Tp>&, const _Up&).
	(operator>=(const _Tp&, const optional<_Tp>&)):
	Turn into operator>=(const _Up&, const optional<_Tp>&).
	* testsuite/20_util/optional/relops/7.cc: New.

2017-03-10  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/17_intro/names.cc: Undefine macros that clash with
	identifiers in AIX system headers.

	* include/bits/invoke.h (__invoke): Use __invoke_result instead of
	result_of, and __is_nothrow_invocable instead of
	__is_nothrow_callable.
	* include/bits/shared_ptr_base.h (__shared_ptr): Use __is_invocable
	instead of __is_callable.
	* include/std/functional (invoke): use invoke_result_t instead of
	result_of_t and is_nothrow_invocable instead of is_nothrow_callable.
	(_Not_fn): Use __invoke_result instead of result_of.
	* include/std/type_traits (__result_of_memobj, __result_of_memfun):
	Remove partial specializations for reference_wrapper types.
	(__result_of_impl): Use __inv_unwrap to strip reference_wrapper.
	(__invoke_result): Define replacement for result_of and then use it to
	define result_of.
	(__is_callable_impl, __is_callable, __is_nothrow_callable): Replace
	with __is_invocable_impl, __is_invocable, and __is_nothrow_invocable
	respectively.
	(invoke_result, invoke_result_t): Define for C++17.
	(is_callable, is_nothrow_callable): Replace with is_invocable,
	is_invocable_r, is_nothrow_invocable, and is_nothrow_invocable_r.
	(is_callable_v, is_nothrow_callable_v): Replace with is_invocable_v,
	is_invocable_r_v, is_nothrow_invocable_v, and is_nothrow_invocable_r_v.
	* include/std/variant (hash<variant<T...>>): Use is_nothrow_invocable_v
	instead of is_nothrow_callable_v.
	* testsuite/20_util/function_objects/invoke/59768.cc: Remove unused
	main function.
	* testsuite/20_util/function_objects/not_fn/1.cc: Use is_invocable
	instead of is_callable.
	* testsuite/20_util/is_callable/*: Rename directory and adjust tests
	to use new traits.
	* testsuite/20_util/is_nothrow_callable/*: Likewise.
	* testsuite/20_util/optional/hash.cc: Use is_invocable_v instead of
	is_callable.
	* testsuite/20_util/variant/hash.cc: Likewise.

2017-03-10  George Lander  <george.lander@arm.com>

	* acinclude.m4 (glibcxx_cv_obsolete_isnan): Define
	_GLIBCXX_INCLUDE_NEXT_C_HEADERS before including math.h.
	* configure: Regenerate.

2017-03-09  Jonathan Wakely  <jwakely@redhat.com>

	* include/std/functional (_Not_fn): Define macro to simplify
	repetitive function definitions.

	* doc/xml/manual/status_cxx2017.xml: Document std::byte support.
	* include/c_global/cstddef (std::byte): Define for C++17.
	* testsuite/18_support/byte/global_neg.cc: New test.
	* testsuite/18_support/byte/ops.cc: New test.
	* testsuite/18_support/byte/requirements.cc: New test.

2017-03-05  Jonathan Wakely  <jwakely@redhat.com>

	* doc/xml/manual/status_cxx2017.xml: Document P0156R2 status.
	* doc/html/*: Regenerate.
	* include/std/mutex (scoped_lock): Implement new C++17 template.
	* testsuite/30_threads/scoped_lock/cons/1.cc: New test.
	* testsuite/30_threads/scoped_lock/requirements/
	explicit_instantiation.cc: New test.
	* testsuite/30_threads/scoped_lock/requirements/typedefs.cc: New test.

2017-03-02  Gerald Pfeifer  <gerald@pfeifer.com>
	    François Dumont  <frs.dumont@gmail.com>
	    Jonathan Wakely  <jwakely@redhat.com>

	* doc/xml/manual/debug_mode.xml: Update and simplify note
	on link- and run-time coexistence.

2017-03-02  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/17_intro/headers/names.cc: Rename to ...
	* testsuite/17_intro/names.cc: ... here.

	PR libstdc++/79789
	* include/bits/hashtable_policy.h (__clp2): Use reserved names for
	parameters and local variables.
	* include/bits/ios_base.h (make_error_code, make_error_condition):
	Likewise.
	* include/bits/list.tcc (list::sort): Likewise.
	* include/bits/mask_array.h (mask_array): Likewise.
	* include/bits/regex.h (regex_token_iterator): Likewise.
	* include/bits/slice_array.h (slice_array): Likewise.
	* include/bits/stl_algo.h (__sample): Likewise.
	* include/std/memory (undeclare_no_pointers): Likewise.
	* include/std/type_traits (is_callable_v, is_nothrow_callable_v):
	Likewise.
	* libsupc++/exception_ptr.h (__dest_thunk): Likewise.
	* testsuite/17_intro/headers/names.cc: New test.

	PR libstdc++/79798
	* include/std/functional (bind::_Res_type_impl): Fix incorrect use of
	result_of that loses top-level cv-qualifiers.
	* testsuite/20_util/bind/79798.cc: New test.

2017-03-01  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/documentation_hacking.xml: Tweak link to
	doxygen.org.

2017-02-23  Jonathan Wakely  <jwakely@redhat.com>

	* include/experimental/iterator: Include <iterator>.
	* testsuite/experimental/iterator/requirements.cc: Check for contents
	of <iterator>.

2017-02-19  Dinka Ranns  <dinka.ranns@googlemail.com>

	C++17 GB50 resolution
	* include/std/chrono (duration::operator++()): Add
	_GLIBCXX17_CONSTEXPR.
	(duration::operator++(int)): Likewise.
	(duration::operator--()): Likewise.
	(duration::operator--(int)): Likewise.
	(duration::operator+=(const duration&)): Likewise.
	(duration::operator-=(const duration&)): Likewise.
	(duration::operator*=(const rep&)): Likewise.
	(duration::operator/=(const rep&)): Likewise.
	(duration::operator%=(const rep&)): Likewise.
	(duration::operator%=(const duration&)): Likewise.
	(time_point::operator+=(const duration&)): Likewise.
	(time_point::operator-=(const duration&)): Likewise.
	* testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: New test.
	* testsuite/20_util/duration/literals/range.cc: Adjust dg-error.
	* testsuite/20_util/time_point/arithmetic/constexpr.cc: New test.

2017-02-19  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/debug.xml: Adjust link to ThreadSanitizer.

2017-02-18  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/io.xml: Update link to groups.google.com.
	Tweak link description.

2017-02-18  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/profile_mode.xml: Fix link.

2017-02-16  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/policy_data_structures.xml: Simplify and
	standardize references to boost.org.
	* doc/xml/manual/policy_data_structures_biblio.xml: Ditto.
	* doc/xml/manual/shared_ptr.xml: Ditto.

2017-02-16  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/60936
	* src/c++11/snprintf_lite.cc (__concat_size_t): Calculate length
	written to buffer, not length remaining in buffer.

2017-02-15  Tim Shen  <timshen@google.com>

	PR libstdc++/78723
	* include/std/variant (operator<(), operator>(), operator<=(),
	operator>=(), operator==(), operator!=()): Implement P0393R3.
	* testsuite/20_util/variant/compile.cc: Adjust tests.
	* testsuite/20_util/variant/run.cc: Adjust tests.

2017-02-15  Tim Shen  <timshen@google.com>

	PR libstdc++/79513
	* include/std/variant (visit()): Forward variant types to the return
	type detection code.
	* testsuite/20_util/variant/compile.cc: Add test cases.

2017-02-13  H.J. Lu  <hongjiu.lu@intel.com>

	PR libstdc++/79348
	* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.

2017-02-13  Jakub Jelinek  <jakub@redhat.com>

	PR libstdc++/79348
	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise.
	* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Likewise.
	* config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise.
	* config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Likewise.
	* config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise.
	* config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Likewise.
	* config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise.
	* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise.

2017-02-13  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/79486
	* include/std/future (__future_base::_Task_state::_M_run)
	(__future_base::_Task_state::_M_run_delayed): Use lvalue types in
	result_of expressions.
	* testsuite/30_threads/packaged_task/79486.cc: New.

2017-02-11  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/79467
	* include/bits/shared_ptr_base.h (__shared_ptr(_Yp*, _Deleter))
	(__shared_ptr(_Yp*, _Deleter, _Alloc)): Use lvalue types in
	__is_callable check.
	* testsuite/20_util/shared_ptr/cons/79467.cc: New.

	* include/bits/atomic_base.h: Re-indent.

2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/profile_mode.xml: Update a paper reference.

2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>

	* src/c++11/snprintf_lite.cc (__err): Use https for bug reporting.

2017-02-08  Jonathan Wakely  <jwakely@redhat.com>

	* doc/xml/manual/policy_data_structures.xml: Fix spelling of author's
	name.
	* doc/xml/manual/policy_data_structures_biblio.xml: Likewise. Remove
	broken links to texts that are no longer online.
	* doc/xml/manual/profile_mode.xml: Update links to CGO 2009 paper and
	LCPC 2006 paper.
	* doc/xml/manual/using.xml: Update links to memory model information.
	* doc/xml/manual/using_exceptions.xml: Update link to "Appendix E:
	Standard-Library Exception Safety".
	* doc/html/*: Regenerate.

2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/profile_mode.xml: Unbreak link to
	"Optimizing Sorting with Machine Learning Algorithms".

2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>

	* src/c++11/snprintf_lite.cc (__err): Update bug reporting URL.

2017-02-08  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/abi.xml: Update link to "Sun Studio 11: C++
	Migration Guide".

2017-02-07  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/html/ext/lwg-active.html: Remove.
	* doc/html/ext/lwg-closed.html: Ditto.
	* doc/html/ext/lwg-defects.html: Ditto.

	* doc/Makefile.am (xml_extradir): Remove.
	(xml_extra): Ditto.
	(stamp-html-docbook-lwg): Remove recipe...
	(stamp-html-docbook-data): ...and its use here.
	* doc/Makefile.in: Regenerate.

	* doc/xml/manual/intro.xml: Shorten two paragraphs explaining
	the relationship to the upstream working group.
	Replace a local link to ../ext/lwg-active.html by the upstream one.
	Replace all reference to ../ext/lwg-defects.html by a new entity
	&DR; which refers to the upstream address.

2017-02-07  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/status_cxx2017.xml: Fix link to N4284.

2017-02-06  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/79323
	* testsuite/20_util/duration/literals/range.cc: Prune extra output
	at -O0.

2017-02-06  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/documentation_hacking.xml: Update URL of the
	DocBook Element Reference.  Use that term as link description
	instead of "online".
	epubcheck has moved to GitHub.
	Remove obsolete link to DocBook Publishing Tools.

2017-02-03  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/66145
	* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Restore ABI override
	so new ios::failure can be caught even when old ABI is the default.
	* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_arithmetic/char/
	exceptions_failbit.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
	exceptions_failbit.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_other/char/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
	* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_other/char/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/ios_base/storage/2.cc: Likewise.

	PR libstdc++/60936
	* src/c++11/Makefile.am: Add new files.
	* src/c++11/Makefile.in: Regenerate.
	* src/c++11/cow-string-inst.cc [!_GLIBCXX_USE_CXX11_ABI]
	(operator<<, operator>>, getline): Move explicit instantiations to ...
	* src/c++11/cow-string-io-inst.cc: ... new file.
	* src/c++11/cow-wstring-inst.cc [!_GLIBCXX_USE_CXX11_ABI]
	(operator<<, operator>>, getline): Move explicit instantiations to ...
	* src/c++11/cow-wstring-io-inst.cc: ... new file.
	* src/c++11/functexcept.cc (__throw_ios_failure, __throw_system_error)
	(__throw_future_error, __throw_bad_function_call):
	(__throw_regex_error): Move functions for C++11 exceptions to the
	files that define the exception types.
	* src/c++11/functional.cc (__throw_bad_function_call): Move here.
	* src/c++11/future.cc (__throw_future_error): Likewise.
	* src/c++11/ios.cc (__throw_ios_failure): Likewise.
	* src/c++11/regex.cc (__throw_regex_error): Likewise.
	* src/c++11/snprintf_lite.cc (__concat_size_t): Print decimal
	representation directly instead of calling __int_to_char.
	* src/c++11/sso_string.cc (__sso_string): New file for definition
	of __sso_string type.
	* src/c++11/string-io-inst.cc [_GLIBCXX_USE_CXX11_ABI]: New file for
	explicit instantiations of narrow string I/O functions.
	* src/c++11/system_error.cc (__throw_system_error): Move here.
	(__sso_string): Move to new file.
	* src/c++11/wstring-io-inst.cc [_GLIBCXX_USE_CXX11_ABI]: New file for
	explicit instantiations of wide string I/O functions.
	* src/c++98/misc-inst.cc [_GLIBCXX_USE_CXX11_ABI] (operator<<)
	(operator>>, getline): Remove explicit instantiations from here.

2017-02-02  H.J. Lu  <hongjiu.lu@intel.com>

	* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.

2017-02-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* configure.host: Separate Solaris/SPARC and x86 baselines.
	* config/abi/post/solaris2.10/baseline_symbols.txt: Move ...
	* config/abi/post/sparc-solaris2.10/baseline_symbols.txt: ... here.
	* config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Move ...
	* config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
	... here.
	* config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Move ...
	* config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: ... here.
	* config/abi/post/i386-solaris2.10/baseline_symbols.txt: New file.
	* config/abi/post/solaris2.11/baseline_symbols.txt: Move ...
	* config/abi/post/sparc-solaris2.11/baseline_symbols.txt: ... here.
	* config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt: Move ...
	* config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
	... here.
	* config/abi/post/solaris2.11/amd64/baseline_symbols.txt: Move ...
	* config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: ... here.
	* config/abi/post/i386-solaris2.11/baseline_symbols.txt: New file.

	* config/abi/post/solaris2.10/baseline_symbols.txt: Regenerate.
	* config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
	* config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
	* config/abi/post/solaris2.11/baseline_symbols.txt: Likewise.
	* config/abi/post/solaris2.11/amd64/baseline_symbols.txt: Likewise.
	* config/abi/post/solaris2.11/sparcv9/baseline_symbols.txt: Likewise.

2017-02-01  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/78346
	* include/bits/predefined_ops.h (_Iter_equals_iter): Store iterator
	not its referent.
	(_Iter_comp_to_iter): Likewise.
	* testsuite/25_algorithms/search/78346.cc: New test.

	PR libstdc++/79254
	* config/abi/pre/gnu.ver: Remove recently added symbols.
	* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
	(basic_string::_M_copy_assign): Remove.
	(basic_string::operator=(const basic_string&)): Don't dispatch to
	_M_copy_assign. If source object is small just deallocate, otherwise
	perform new allocation before making any changes.
	* include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
	(basic_string::_M_copy_assign(const basic_string&, true_type)):
	Remove.
	* testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
	Test cases where the allocators are equal or the string is small.
	* testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
	Likewise.

2017-01-30  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement LWG 2825, LWG 2756 breaks class template argument
	deduction for optional.
	* include/std/optional: Add a deduction guide.
	* testsuite/20_util/optional/cons/deduction_guide.cc: New.

2017-01-27  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/79254
	* config/abi/pre/gnu.ver: Add new symbols.
	* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
	(basic_string::_M_copy_assign): New overloaded functions to perform
	copy assignment.
	(basic_string::operator=(const basic_string&)): Dispatch to
	_M_copy_assign.
	* include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
	(basic_string::_M_copy_assign(const basic_string&, true_type)):
	Define, performing rollback on exception.
	* testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
	Test exception-safety guarantee.
	* testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
	Likewise.
	* testsuite/util/testsuite_allocator.h (uneq_allocator::swap): Make
	std::swap visible.

2017-01-26  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/70607
	* include/tr1/complex (conj): Remove using-declaration and restore
	overloads, reverting previous change.

	* testsuite/23_containers/list/operations/78389.cc: Fix for C++11
	mode.
	* testsuite/23_containers/priority_queue/requirements/constructible.cc:
	Mark as unsupported in C++98 mode.
	* testsuite/23_containers/queue/requirements/constructible.cc:
	Likewise.
	* testsuite/23_containers/stack/requirements/constructible.cc:
	Likewise.
	* testsuite/25_algorithms/make_heap/movable.cc: Fix for C++11 mode.

	PR libstdc++/79243
	* include/bits/c++config (literals::string_view_literals::__7): Add.
	Only declare versioned namespaces for the relevant C++ dialects.
	* include/experimental/bits/erase_if.h (fundamentals_v2::__detail):
	Add versioning macros.
	* include/experimental/bits/lfts_config.h:
	(fundamentals_v1::__detail::__7, fundamentals_v2::__detail::__7): Add.
	* include/experimental/string_view (fundamentals_v2::__detail):
	Add versioning macros.
	(fundamentals_v2::__detail::__identity): Remove.
	(fundamentals_v2::__detail::__idt): Use common_type instead of
	__detail::__identity.
	* include/std/string_view (__detail::__identity, __detail::__idt):
	Likewise.
	(literals::string_view_literals): Fix nesting of versioning macros.

	PR libstdc++/79190
	* libsupc++/del_opa.cc (operator delete(void*, std::align_val_t))
	[!_GLIBCXX_HAVE_ALIGNED_ALLOC && !_GLIBCXX_HAVE_POSIX_MEMALIGN
	&& !_GLIBCXX_HAVE_MEMALIGN && !_GLIBCXX_HAVE__ALIGNED_MALLOC]:
	Retrieve original pointer value allocated by malloc.
	* libsupc++/new_opa.cc [!_GLIBCXX_HAVE_ALIGNED_ALLOC
	&& !_GLIBCXX_HAVE_POSIX_MEMALIGN && !_GLIBCXX_HAVE_MEMALIGN
	&& !_GLIBCXX_HAVE__ALIGNED_MALLOC] (aligned_alloc(size_t, size_t)):
	Define, adjusting pointer value allocated by malloc and storing for
	retrieval by operator delete.

2017-01-26  Jakub Jelinek  <jakub@redhat.com>

	* libsupc++/eh_atomics.h: Update copyright years.
	* testsuite/20_util/unique_ptr/cons/default.cc: Update copyright years.

2017-01-25  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/61791
	PR libstdc++/70607
	* include/std/complex (real(T), imag(T)): Add _GLIBCXX_CONSTEXPR.
	(proj(T), conj(T)): Change return types per DR 1522.
	* include/tr1/complex (conj): Remove overloads and use std::conj.
	* testsuite/26_numerics/complex/dr781_dr1137.cc: Rename to...
	* testsuite/26_numerics/complex/dr781.cc: ... this, and update.
	* testsuite/26_numerics/complex/value_operations/constexpr2.cc: Test
	real(T) and imag(T). Allow testing for C++11 too.

2017-01-24  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/79206
	* include/experimental/string_view (operator==): Check sizes first.
	* include/std/string_view (operator==): Likewise.

2017-01-23  Jonathan Wakely  <jwakely@redhat.com>

	* testsuite/experimental/array/make_array.cc: Restore <functional>
	inclusion.

2017-01-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* testsuite/29_atomics/atomic/69301.cc: Require atomic builtins.

2017-01-23  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/79195
	* include/experimental/array (__make_array_elem): New class template
	and partial specialization.
	(__is_reference_wrapper): Move into __make_array_elem specialization.
	(make_array): Use __make_array_elem to determine element type and move
	static assertion into specialization. Qualify std::forward call.
	(to_array): Add exception specifiation.
	* testsuite/experimental/array/make_array.cc: Test argument types
	without a common type.
	* testsuite/experimental/array/neg.cc: Adjust expected error message.

2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/debug.xml: code.google.com uses https now.

2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/xml/manual/test.xml: Fix link into gccint online manual.

2017-01-21  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Make poisoned hashes SFINAE away the call operator of the hash.
	* include/bits/functional_hash.h
	(__poison_hash::__enable_hash_call): New.
	* include/std/optional (__optional_hash_call_base): New.
	(hash<optional<_Tp>>): Derive from the new base,
	move the hash function into that base.
	* include/std/variant (__variant_hash_call_base_impl): New.
	(__variant_hash_call_base): Likewise.
	(hash<variant<_Types...>>): Derive from the new base,
	move the hash function into that base.
	* testsuite/20_util/optional/hash.cc: Add tests for is_callable.
	* testsuite/20_util/variant/hash.cc: Likewise.

