public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug libstdc++/93147] std::tuple of empty structs with member equality operators has ambiguous equality operator [not found] <bug-93147-4@http.gcc.gnu.org/bugzilla/> @ 2020-03-19 12:37 ` redi at gcc dot gnu.org 2020-08-17 14:29 ` cvs-commit at gcc dot gnu.org 2020-08-17 14:32 ` redi at gcc dot gnu.org 2 siblings, 0 replies; 3+ messages in thread From: redi at gcc dot gnu.org @ 2020-03-19 12:37 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93147 Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- See Also| |https://gcc.gnu.org/bugzill | |a/show_bug.cgi?id=55713 Target Milestone|--- |11.0 ^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug libstdc++/93147] std::tuple of empty structs with member equality operators has ambiguous equality operator [not found] <bug-93147-4@http.gcc.gnu.org/bugzilla/> 2020-03-19 12:37 ` [Bug libstdc++/93147] std::tuple of empty structs with member equality operators has ambiguous equality operator redi at gcc dot gnu.org @ 2020-08-17 14:29 ` cvs-commit at gcc dot gnu.org 2020-08-17 14:32 ` redi at gcc dot gnu.org 2 siblings, 0 replies; 3+ messages in thread From: cvs-commit at gcc dot gnu.org @ 2020-08-17 14:29 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93147 --- Comment #10 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jonathan Wakely <redi@gcc.gnu.org>: https://gcc.gnu.org/g:91e6226f880b048275a7ceedef716e159c7cefd9 commit r11-2720-g91e6226f880b048275a7ceedef716e159c7cefd9 Author: Jonathan Wakely <jwakely@redhat.com> Date: Fri Aug 7 17:13:56 2020 +0100 libstdc++: Remove inheritance from elements in std::tuple This fixes a number of std::tuple bugs by no longer making use of the empty base-class optimization. By using the C++20 [[no_unique_address]] attribute we can always store the element as a data member, while still compressing the layout of tuples containing empty types. Since we no longer use inheritance we could also apply the compression optimization for final types and for tuples of tuples, but doing so would be an ABI break. Using [[no_unique_address]] more liberally for the unstable std::__8 configuration is left for a later date. There may be reasons not to apply the attribute unconditionally, e.g. see the discussion about guaranteed elision in PR 94062. libstdc++-v3/ChangeLog: PR libstdc++/55713 PR libstdc++/71096 PR libstdc++/93147 * include/std/tuple [__has_cpp_attribute(no_unique_address)] (_Head_base<Idx, Head, true>): New definition of the partial specialization, using [[no_unique_address]] instead of inheritance. * testsuite/libstdc++-prettyprinters/48362.cc: Adjust expected output. * testsuite/20_util/tuple/comparison_operators/93147.cc: New test. * testsuite/20_util/tuple/creation_functions/55713.cc: New test. * testsuite/20_util/tuple/element_access/71096.cc: New test. ^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug libstdc++/93147] std::tuple of empty structs with member equality operators has ambiguous equality operator [not found] <bug-93147-4@http.gcc.gnu.org/bugzilla/> 2020-03-19 12:37 ` [Bug libstdc++/93147] std::tuple of empty structs with member equality operators has ambiguous equality operator redi at gcc dot gnu.org 2020-08-17 14:29 ` cvs-commit at gcc dot gnu.org @ 2020-08-17 14:32 ` redi at gcc dot gnu.org 2 siblings, 0 replies; 3+ messages in thread From: redi at gcc dot gnu.org @ 2020-08-17 14:32 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93147 Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|NEW |RESOLVED --- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> --- Fixed for GCC 11. ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-08-17 14:32 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <bug-93147-4@http.gcc.gnu.org/bugzilla/> 2020-03-19 12:37 ` [Bug libstdc++/93147] std::tuple of empty structs with member equality operators has ambiguous equality operator redi at gcc dot gnu.org 2020-08-17 14:29 ` cvs-commit at gcc dot gnu.org 2020-08-17 14:32 ` redi at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).