gcc/libstdc++-v3/include
Jonathan Wakely b334182653 libstdc++: Fix is_trivially_constructible (PR 94033)
This attempts to make is_nothrow_constructible more robust (and
efficient to compile) by not depending on is_constructible. Instead the
__is_constructible intrinsic is used directly. The helper class
__is_nt_constructible_impl which checks whether the construction is
non-throwing now takes a bool template parameter that is substituted by
the result of the instrinsic. This fixes the reported bug by not using
the already-instantiated (and incorrect) value of std::is_constructible.
I don't think it really fixes the problem in general, because
std::is_nothrow_constructible itself could already have been
instantiated in a context where it gives the wrong result. A proper fix
needs to be done in the compiler.

	PR libstdc++/94033
	* include/std/type_traits (__is_nt_default_constructible_atom): Remove.
	(__is_nt_default_constructible_impl): Remove.
	(__is_nothrow_default_constructible_impl): Remove.
	(__is_nt_constructible_impl): Add bool template parameter. Adjust
	partial specializations.
	(__is_nothrow_constructible_impl): Replace class template with alias
	template.
	(is_nothrow_default_constructible): Derive from alias template
	__is_nothrow_constructible_impl instead of
	__is_nothrow_default_constructible_impl.
	* testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
2020-03-18 23:19:35 +00:00
..
backward Update copyright years. 2020-01-01 12:51:42 +01:00
bits libstdc++: Fix compilation with released versions of Clang 2020-03-18 12:55:29 +00:00
c Update copyright years. 2020-01-01 12:51:42 +01:00
c_compatibility Update copyright years. 2020-01-01 12:51:42 +01:00
c_global Update copyright years. 2020-01-01 12:51:42 +01:00
c_std Update copyright years. 2020-01-01 12:51:42 +01:00
debug libstdc++: Define <=> for Debug Mode array 2020-02-27 15:13:16 +00:00
decimal Update copyright years. 2020-01-01 12:51:42 +01:00
experimental libstdc++: Fix type-erasure in experimental::net::executor (PR 94203) 2020-03-18 00:23:39 +00:00
ext libstdc++: Implement P1878R1 "Constraining Readable Types" 2020-02-07 16:58:43 +00:00
parallel Update copyright years. 2020-01-01 12:51:42 +01:00
precompiled Update copyright years. 2020-01-01 12:51:42 +01:00
pstl Restore enable_if lost during original import of pstl 2019-12-11 03:38:24 +00:00
std libstdc++: Fix is_trivially_constructible (PR 94033) 2020-03-18 23:19:35 +00:00
tr1 Update copyright years. 2020-01-01 12:51:42 +01:00
tr2 Update copyright years. 2020-01-01 12:51:42 +01:00
Makefile.am libstdc++: Add lightweight replacement for std::numeric_limits (PR 92546) 2020-02-17 15:11:04 +00:00
Makefile.in libstdc++: Add lightweight replacement for std::numeric_limits (PR 92546) 2020-02-17 15:11:04 +00:00