gcc/libstdc++-v3
Jonathan Wakely 61f5cb2313 PR libstdc++/89164 enforce constraints for uninitialized algos
The memmove optimizations for std::uninitialized_copy/fill/_n will
compile even if the type is not copy constructible, because std::copy
doesn't require copy construction to work. But the uninitialized
algorithms do require it.

This adds explicit static assertions to ensure we don't allow ill-formed
initializations.

	PR libstdc++/89164
	* include/bits/stl_algobase.h (__copy_move): Give descriptive names
	to template parameters.
	* include/bits/stl_uninitialized.h (uninitialized_copy)
	(uninitialized_fill, uninitialized_fill_n): Add static assertions to
	diagnose invalid uses.
	* testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
	Adjust expected error.
	* testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc:
	New test.
	* testsuite/20_util/specialized_algorithms/uninitialized_copy_n/
	89164.cc: New test.
	* testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc:
	New test.
	* testsuite/20_util/specialized_algorithms/uninitialized_fill_n/
	89164.cc: New test.
	* testsuite/23_containers/vector/cons/89164.cc: New test.
	* testsuite/23_containers/vector/cons/89164_c++17.cc: New test.

From-SVN: r275177
2019-08-30 14:54:49 +01:00
..
config PR libstdc++/91067 add more missing exports for directory iterators 2019-08-29 13:16:27 +01:00
doc Do not try to process deleted headers with Doxygen 2019-08-20 22:35:55 +01:00
include PR libstdc++/89164 enforce constraints for uninitialized algos 2019-08-30 14:54:49 +01:00
libsupc++ PR libstdc++/51333 Define recursive_init_error constructor non-inline 2019-07-29 15:27:19 +01:00
po
python Have std::vector printer's iterator return bool for vector<bool> 2019-06-19 23:57:06 +01:00
scripts
src Fix libstdc++ lstat missing return type for Windows target. 2019-08-23 22:04:33 +01:00
testsuite PR libstdc++/89164 enforce constraints for uninitialized algos 2019-08-30 14:54:49 +01:00
acinclude.m4 PR libstdc++/91067 add more missing exports for directory iterators 2019-08-29 13:16:27 +01:00
aclocal.m4
ChangeLog PR libstdc++/89164 enforce constraints for uninitialized algos 2019-08-30 14:54:49 +01:00
ChangeLog-1998
ChangeLog-1999
ChangeLog-2000
ChangeLog-2001
ChangeLog-2002
ChangeLog-2003
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007
ChangeLog-2008
ChangeLog-2009
ChangeLog-2010
ChangeLog-2011
ChangeLog-2012
ChangeLog-2013
ChangeLog-2014
ChangeLog-2015
ChangeLog-2016
ChangeLog-2017
ChangeLog-2018
config.h.in PR libstdc++/85494 use rdseed and rand_s in std::random_device 2019-05-29 15:45:35 +01:00
configure PR libstdc++/91067 add more missing exports for directory iterators 2019-08-29 13:16:27 +01:00
configure.ac Fix libstdc++ install-pdf support. 2019-07-01 19:30:52 -07:00
configure.host
crossconfig.m4
fragment.am
linkage.m4
Makefile.am
Makefile.in
README

file: libstdc++-v3/README

New users may wish to point their web browsers to the file
index.html in the 'doc/html' subdirectory.  It contains brief
building instructions and notes on how to configure the library in
interesting ways.