gcc/libstdc++-v3/include
Jonathan Wakely 86fc6ec9f3 Implement LWG 2905 changes to constrain unique_ptr constructors
LWG DR 2905 says that is_constructible_v<unique_ptr<P, D>, P, D const &>
should be false when D is not copy constructible. This commit implements
the changes from the DR and simplifies the signatures as per
https://github.com/cplusplus/draft/issues/1530

	* include/bits/unique_ptr.h (__uniq_ptr_impl): Add assertions to
	check deleter type.
	(unique_ptr::unique_ptr(pointer, const deleter_type&)): Add copy
	constructible constraint.
	(unique_ptr::unique_ptr(pointer, deleter_type&&)): Disable for
	deleters of reference type and add move constructible constraint.
	(unique_ptr::unique_ptr(pointer, remove_reference_t<deleter_type>&&)):
	Disable for deleters of non-reference type. Define as deleted.
	(unique_ptr<T[], D>): Likewise.
	* testsuite/20_util/unique_ptr/assign/48635_neg.cc: Replace dg-error
	directives with unstable line numbers with dg-prune-output.
	* testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
	* testsuite/20_util/unique_ptr/cons/lwg2905.cc: New test.
	* testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
	Make deleter types invocable.

From-SVN: r264206
2018-09-11 11:55:49 +01:00
..
backward P0935R0 Eradicating unnecessarily explicit default constructors 2018-06-14 15:12:24 +01:00
bits Implement LWG 2905 changes to constrain unique_ptr constructors 2018-09-11 11:55:49 +01:00
c Update copyright years. 2018-01-03 11:03:58 +01:00
c_compatibility Update copyright years. 2018-01-03 11:03:58 +01:00
c_global Remove <chrono> dependency on _GLIBCXX_USE_C99_STDINT_TR1 2018-07-26 15:01:55 +01:00
c_std Update copyright years. 2018-01-03 11:03:58 +01:00
debug 2018-09-02 François Dumont <fdumont@gcc.gnu.org> 2018-09-02 10:20:57 +00:00
decimal Update copyright years. 2018-01-03 11:03:58 +01:00
experimental PR libstdc++/87061 remove pmr type aliases for COW strings 2018-08-22 23:54:33 +01:00
ext Fix __gnu_cxx::_Pointer_adapter for long long arithmetic 2018-08-30 13:24:06 +01:00
parallel Update copyright years. 2018-01-03 11:03:58 +01:00
precompiled Add initial version of C++17 <memory_resource> header 2018-07-24 22:09:55 +01:00
profile Update copyright years. 2018-01-03 11:03:58 +01:00
std Avoid undefined shifts in ceil2 operations 2018-08-30 16:07:35 +01:00
tr1 Fix warning with -Wsign-compare -Wsystem-headers 2018-08-16 18:16:33 +01:00
tr2 Update copyright years. 2018-01-03 11:03:58 +01:00
Makefile.am Add <bit> and <version> to freestanding headers 2018-08-13 19:54:34 +01:00
Makefile.in Add <bit> and <version> to freestanding headers 2018-08-13 19:54:34 +01:00