gcc/libstdc++-v3/include/std
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
..
algorithm libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
any
array
atomic Fix 2 typos in documentation of libstdc++. 2020-01-28 10:25:30 +01:00
bit libstdc++ P1956R1 On the names of low-level bit manipulation functions 2020-02-17 17:09:18 +00:00
bitset
charconv libstdc++ P1956R1 On the names of low-level bit manipulation functions 2020-02-17 17:09:18 +00:00
chrono
codecvt
complex
concepts libstdc++: Simplify std::totally_ordered (LWG 3331) 2020-02-19 21:40:03 +00:00
condition_variable
coroutine
deque libstdc++: Update __cpp_lib_erase_if macro (P1115R3) 2020-02-15 10:25:23 +00:00
execution
filesystem
forward_list libstdc++: Update __cpp_lib_erase_if macro (P1115R3) 2020-02-15 10:25:23 +00:00
fstream
functional libstdc++: Fix name of macro in #undef directive 2020-02-04 13:30:57 +00:00
future
iomanip
ios
iosfwd
iostream
istream
iterator
limits
list libstdc++: Update __cpp_lib_erase_if macro (P1115R3) 2020-02-15 10:25:23 +00:00
locale
map
memory libstdc++: uninitialized_construct_using_allocator should use construct_at (LWG 3321) 2020-02-19 12:46:57 +00:00
memory_resource libstdc++: make polymorphic_allocator throw consistent type (LWG 3237) 2020-02-19 15:34:08 +00:00
mutex
numbers
numeric libstdc++: P1645R1 constexpr for <numeric> algorithms 2020-02-26 10:23:17 -05:00
optional libstdc++: Define <=> for tuple, optional and variant 2020-02-21 17:12:39 +00:00
ostream
queue
random
ranges libstdc++: Add a test that takes the split_view of a non-forward range 2020-03-11 14:56:52 -04:00
ratio
regex
scoped_allocator
set
shared_mutex libstdc++: Fix call to __glibcxx_rwlock_init (PR 93244) 2020-03-06 12:03:17 +00:00
span libstdc++: enable_view has false positives (LWG 3326) 2020-02-24 12:15:05 +00:00
sstream
stack
stdexcept
stop_token libstdc++ Fix compilation of <stop_token> with Clang 2020-03-18 12:55:29 +00:00
streambuf
string libstdc++: Update __cpp_lib_erase_if macro (P1115R3) 2020-02-15 10:25:23 +00:00
string_view libstdc++: allow string_view insertion to work with <iosfwd> (PR 94051) 2020-03-05 16:46:28 +00:00
system_error libstdc++: Define operator<=> for <system_error> types 2020-02-20 12:27:48 +00:00
thread libstdc++: Add <=> to thread::id 2020-02-20 11:30:19 +00:00
tuple libstdc++: Define <=> for tuple, optional and variant 2020-02-21 17:12:39 +00:00
type_traits libstdc++: Fix is_trivially_constructible (PR 94033) 2020-03-18 23:19:35 +00:00
typeindex
unordered_map
unordered_set
utility libstdc++: Add lightweight replacement for std::numeric_limits (PR 92546) 2020-02-17 15:11:04 +00:00
valarray
variant libstdc++: Define <=> for tuple, optional and variant 2020-02-21 17:12:39 +00:00
vector libstdc++: Update __cpp_lib_erase_if macro (P1115R3) 2020-02-15 10:25:23 +00:00
version libstdc++: P1645R1 constexpr for <numeric> algorithms 2020-02-26 10:23:17 -05:00