gcc/libstdc++-v3/testsuite/20_util
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
..
add_const Update copyright years. 2020-01-01 12:51:42 +01:00
add_cv Update copyright years. 2020-01-01 12:51:42 +01:00
add_lvalue_reference Update copyright years. 2020-01-01 12:51:42 +01:00
add_pointer Update copyright years. 2020-01-01 12:51:42 +01:00
add_rvalue_reference Update copyright years. 2020-01-01 12:51:42 +01:00
add_volatile Update copyright years. 2020-01-01 12:51:42 +01:00
addressof Update copyright years. 2020-01-01 12:51:42 +01:00
align Update copyright years. 2020-01-01 12:51:42 +01:00
aligned_storage Update copyright years. 2020-01-01 12:51:42 +01:00
aligned_union Update copyright years. 2020-01-01 12:51:42 +01:00
alignment_of Update copyright years. 2020-01-01 12:51:42 +01:00
allocator Update copyright years. 2020-01-01 12:51:42 +01:00
allocator_traits Update copyright years. 2020-01-01 12:51:42 +01:00
any Update copyright years. 2020-01-01 12:51:42 +01:00
as_const Update copyright years. 2020-01-01 12:51:42 +01:00
assume_aligned Update copyright years. 2020-01-01 12:51:42 +01:00
auto_ptr Update copyright years. 2020-01-01 12:51:42 +01:00
bad_function_call Update copyright years. 2020-01-01 12:51:42 +01:00
bind x32 does not support MS ABI, skip testcases that require it. 2020-03-16 14:38:06 +01:00
bool_constant Update copyright years. 2020-01-01 12:51:42 +01:00
common_reference/requirements Update copyright years. 2020-01-01 12:51:42 +01:00
common_type/requirements Update copyright years. 2020-01-01 12:51:42 +01:00
conditional/requirements Update copyright years. 2020-01-01 12:51:42 +01:00
decay/requirements Update copyright years. 2020-01-01 12:51:42 +01:00
declval/requirements Update copyright years. 2020-01-01 12:51:42 +01:00
default_delete Update copyright years. 2020-01-01 12:51:42 +01:00
duration Update copyright years. 2020-01-01 12:51:42 +01:00
duration_cast Update copyright years. 2020-01-01 12:51:42 +01:00
enable_if/requirements Update copyright years. 2020-01-01 12:51:42 +01:00
enable_shared_from_this Update copyright years. 2020-01-01 12:51:42 +01:00
exchange Update copyright years. 2020-01-01 12:51:42 +01:00
extent Update copyright years. 2020-01-01 12:51:42 +01:00
forward Update copyright years. 2020-01-01 12:51:42 +01:00
from_chars Update copyright years. 2020-01-01 12:51:42 +01:00
function Update copyright years. 2020-01-01 12:51:42 +01:00
function_objects libstdc++: Fix names of types in comment 2020-02-09 14:00:23 +00:00
has_unique_object_representations Update copyright years. 2020-01-01 12:51:42 +01:00
has_virtual_destructor Update copyright years. 2020-01-01 12:51:42 +01:00
hash Update copyright years. 2020-01-01 12:51:42 +01:00
headers Update copyright years. 2020-01-01 12:51:42 +01:00
in_place Update copyright years. 2020-01-01 12:51:42 +01:00
integer_comparisons libstdc++: Fix new tests that fail for ILP32 targets 2020-02-18 18:57:30 +00:00
integer_sequence Update copyright years. 2020-01-01 12:51:42 +01:00
integral_constant Update copyright years. 2020-01-01 12:51:42 +01:00
is_abstract Update copyright years. 2020-01-01 12:51:42 +01:00
is_aggregate Update copyright years. 2020-01-01 12:51:42 +01:00
is_arithmetic Update copyright years. 2020-01-01 12:51:42 +01:00
is_array Update copyright years. 2020-01-01 12:51:42 +01:00
is_assignable Update copyright years. 2020-01-01 12:51:42 +01:00
is_base_of Update copyright years. 2020-01-01 12:51:42 +01:00
is_bounded_array Update copyright years. 2020-01-01 12:51:42 +01:00
is_class Update copyright years. 2020-01-01 12:51:42 +01:00
is_complete_or_unbounded Update copyright years. 2020-01-01 12:51:42 +01:00
is_compound Update copyright years. 2020-01-01 12:51:42 +01:00
is_const Update copyright years. 2020-01-01 12:51:42 +01:00
is_constant_evaluated Update copyright years. 2020-01-01 12:51:42 +01:00
is_constructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_convertible Update copyright years. 2020-01-01 12:51:42 +01:00
is_copy_assignable Update copyright years. 2020-01-01 12:51:42 +01:00
is_copy_constructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_default_constructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_destructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_empty Update copyright years. 2020-01-01 12:51:42 +01:00
is_enum Update copyright years. 2020-01-01 12:51:42 +01:00
is_final Update copyright years. 2020-01-01 12:51:42 +01:00
is_floating_point Update copyright years. 2020-01-01 12:51:42 +01:00
is_function x32 does not support MS ABI, skip testcases that require it. 2020-03-16 14:38:06 +01:00
is_fundamental Update copyright years. 2020-01-01 12:51:42 +01:00
is_implicitly_default_constructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_integral Update copyright years. 2020-01-01 12:51:42 +01:00
is_invocable Update copyright years. 2020-01-01 12:51:42 +01:00
is_literal_type Update copyright years. 2020-01-01 12:51:42 +01:00
is_lvalue_reference Update copyright years. 2020-01-01 12:51:42 +01:00
is_member_function_pointer x32 does not support MS ABI, skip testcases that require it. 2020-03-16 14:38:06 +01:00
is_member_object_pointer Update copyright years. 2020-01-01 12:51:42 +01:00
is_member_pointer Update copyright years. 2020-01-01 12:51:42 +01:00
is_move_assignable Update copyright years. 2020-01-01 12:51:42 +01:00
is_move_constructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_nothrow_assignable Update copyright years. 2020-01-01 12:51:42 +01:00
is_nothrow_constructible libstdc++: Fix is_trivially_constructible (PR 94033) 2020-03-18 23:19:35 +00:00
is_nothrow_convertible Update copyright years. 2020-01-01 12:51:42 +01:00
is_nothrow_copy_assignable Update copyright years. 2020-01-01 12:51:42 +01:00
is_nothrow_copy_constructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_nothrow_default_constructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_nothrow_destructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_nothrow_invocable Update copyright years. 2020-01-01 12:51:42 +01:00
is_nothrow_move_assignable Update copyright years. 2020-01-01 12:51:42 +01:00
is_nothrow_move_constructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_nothrow_swappable Update copyright years. 2020-01-01 12:51:42 +01:00
is_nothrow_swappable_with Update copyright years. 2020-01-01 12:51:42 +01:00
is_null_pointer Update copyright years. 2020-01-01 12:51:42 +01:00
is_object x32 does not support MS ABI, skip testcases that require it. 2020-03-16 14:38:06 +01:00
is_pod libstdc++: Fix testsuite failures and warnings due to is_pod deprecation 2020-01-09 21:31:50 +00:00
is_pointer Update copyright years. 2020-01-01 12:51:42 +01:00
is_polymorphic Update copyright years. 2020-01-01 12:51:42 +01:00
is_reference Update copyright years. 2020-01-01 12:51:42 +01:00
is_rvalue_reference Update copyright years. 2020-01-01 12:51:42 +01:00
is_same Update copyright years. 2020-01-01 12:51:42 +01:00
is_scalar Update copyright years. 2020-01-01 12:51:42 +01:00
is_signed Update copyright years. 2020-01-01 12:51:42 +01:00
is_standard_layout Update copyright years. 2020-01-01 12:51:42 +01:00
is_swappable Update copyright years. 2020-01-01 12:51:42 +01:00
is_swappable_with Update copyright years. 2020-01-01 12:51:42 +01:00
is_trivial Update copyright years. 2020-01-01 12:51:42 +01:00
is_trivially_assignable Update copyright years. 2020-01-01 12:51:42 +01:00
is_trivially_constructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_trivially_copy_assignable Update copyright years. 2020-01-01 12:51:42 +01:00
is_trivially_copy_constructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_trivially_copyable Update copyright years. 2020-01-01 12:51:42 +01:00
is_trivially_default_constructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_trivially_destructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_trivially_move_assignable Update copyright years. 2020-01-01 12:51:42 +01:00
is_trivially_move_constructible Update copyright years. 2020-01-01 12:51:42 +01:00
is_unbounded_array Update copyright years. 2020-01-01 12:51:42 +01:00
is_union Update copyright years. 2020-01-01 12:51:42 +01:00
is_unsigned Update copyright years. 2020-01-01 12:51:42 +01:00
is_void Update copyright years. 2020-01-01 12:51:42 +01:00
is_volatile Update copyright years. 2020-01-01 12:51:42 +01:00
logical_traits Update copyright years. 2020-01-01 12:51:42 +01:00
make_signed/requirements Update copyright years. 2020-01-01 12:51:42 +01:00
make_unsigned/requirements Update copyright years. 2020-01-01 12:51:42 +01:00
memory_resource Update copyright years. 2020-01-01 12:51:42 +01:00
monotonic_buffer_resource libstdc++: Define memory resource key functions non-inline (PR93208) 2020-01-09 13:18:20 +00:00
move Update copyright years. 2020-01-01 12:51:42 +01:00
move_if_noexcept Update copyright years. 2020-01-01 12:51:42 +01:00
nonesuch Update copyright years. 2020-01-01 12:51:42 +01:00
optional libstdc++: Define <=> for tuple, optional and variant 2020-02-21 17:12:39 +00:00
owner_less Update copyright years. 2020-01-01 12:51:42 +01:00
pair Update copyright years. 2020-01-01 12:51:42 +01:00
pointer_safety Update copyright years. 2020-01-01 12:51:42 +01:00
pointer_traits Update copyright years. 2020-01-01 12:51:42 +01:00
polymorphic_allocator libstdc++: make polymorphic_allocator throw consistent type (LWG 3237) 2020-02-19 15:34:08 +00:00
rank Update copyright years. 2020-01-01 12:51:42 +01:00
ratio Update copyright years. 2020-01-01 12:51:42 +01:00
raw_storage_iterator Update copyright years. 2020-01-01 12:51:42 +01:00
reference_wrapper Update copyright years. 2020-01-01 12:51:42 +01:00
remove_all_extents Update copyright years. 2020-01-01 12:51:42 +01:00
remove_const Update copyright years. 2020-01-01 12:51:42 +01:00
remove_cv Update copyright years. 2020-01-01 12:51:42 +01:00
remove_cvref Update copyright years. 2020-01-01 12:51:42 +01:00
remove_extent Update copyright years. 2020-01-01 12:51:42 +01:00
remove_pointer Update copyright years. 2020-01-01 12:51:42 +01:00
remove_reference Update copyright years. 2020-01-01 12:51:42 +01:00
remove_volatile Update copyright years. 2020-01-01 12:51:42 +01:00
result_of Update copyright years. 2020-01-01 12:51:42 +01:00
scoped_allocator Update copyright years. 2020-01-01 12:51:42 +01:00
shared_ptr Update copyright years. 2020-01-01 12:51:42 +01:00
specialized_algorithms libstdc++: Fix incorrect use of memset in ranges::fill_n (PR 94017) 2020-03-03 22:46:39 -05:00
steady_clock Update copyright years. 2020-01-01 12:51:42 +01:00
synchronized_pool_resource Update copyright years. 2020-01-01 12:51:42 +01:00
system_clock Update copyright years. 2020-01-01 12:51:42 +01:00
time_point Update copyright years. 2020-01-01 12:51:42 +01:00
time_point_cast Update copyright years. 2020-01-01 12:51:42 +01:00
to_address Update copyright years. 2020-01-01 12:51:42 +01:00
to_chars Update copyright years. 2020-01-01 12:51:42 +01:00
tuple libstdc++: Define <=> for tuple, optional and variant 2020-02-21 17:12:39 +00:00
type_identity/requirements Update copyright years. 2020-01-01 12:51:42 +01:00
typeindex Update copyright years. 2020-01-01 12:51:42 +01:00
underlying_type/requirements Update copyright years. 2020-01-01 12:51:42 +01:00
unique_ptr libstdc++: Fix regressions in unique_ptr::swap (PR 93562) 2020-02-04 13:02:37 +00:00
unsynchronized_pool_resource Update copyright years. 2020-01-01 12:51:42 +01:00
unwrap_reference libstdc++: Add __cpp_lib_unwrap_ref feature test macro 2020-02-19 15:28:54 +00:00
uses_allocator Update copyright years. 2020-01-01 12:51:42 +01:00
variant libstdc++: Define <=> for tuple, optional and variant 2020-02-21 17:12:39 +00:00
void_t Update copyright years. 2020-01-01 12:51:42 +01:00
weak_ptr Update copyright years. 2020-01-01 12:51:42 +01:00
rel_ops.cc Update copyright years. 2020-01-01 12:51:42 +01:00
temporary_buffer.cc Update copyright years. 2020-01-01 12:51:42 +01:00
variable_templates_for_traits.cc Update copyright years. 2020-01-01 12:51:42 +01:00