This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
As noted in bugzilla PR 77641 I don't think is_literal_type is the right condition for _Uninitialized, because a type can have a non-trivial default constructor but still be literal, but that means it can't be used in the union in _Variant_storage. I'm not sure if the right condition is is_literal && is_trivially_default_constructible, or if this is enough: PR libstdc++/77641 * include/std/variant (__detail::__variant::_Uninitialized): Check is_trivially_default_constructible_v instead of is_literal_type_v. * testsuite/20_util/variant/compile.cc: Test literal type with non-trivial default constructor. Tim, are there case that this doesn't handle, where we need is_literal as well? (bear in mind that is_trivially_default_constructible also depends on trivially destructible). Tested powerpc64le-linux with no failures.
Attachment:
patch.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |