[Bug c++/119059] [C++26] P3074R7 - Trivial unions

friedkeenan at protonmail dot com via Gcc-bugs <[email protected]>
Newsgroups gmane.comp.gcc.bugs
Message-ID <[email protected]/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119059

friedkeenan at protonmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |friedkeenan at protonmail dot com

--- Comment #6 from friedkeenan at protonmail dot com ---
I'm not sure where is best to note this, but it would appear that this is also
relevant for GCC's implementation of `std::meta::define_aggregate` when applied
to union types.

On GCC 16, if one calls `define_aggregate` on a union type and gives it fields
which aren't trivially destructible, then the union type ends up with a deleted
destructor, instead of what is intended by P2996 which is for the union type to
have an empty, non-deleted destructor. And that's needed for the paper's
"simple variant type" example to work.

On trunk, `define_aggregate` works as expected, presumably because of the
implementation of this paper.

I'm not sure what the best way of dealing with that discrepancy would be, or if
it needs dealing with at all, but I wanted to make sure that the discrepancy
was known to you all.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.