public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/94231] New: Invalid move constructor defaulted outside of class as deleted is accepted
@ 2020-03-20  0:08 herring at lanl dot gov
  2020-04-18  0:06 ` [Bug c++/94231] " mpolacek at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: herring at lanl dot gov @ 2020-03-20  0:08 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94231

            Bug ID: 94231
           Summary: Invalid move constructor defaulted outside of class as
                    deleted is accepted
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: herring at lanl dot gov
  Target Milestone: ---

GCC incorrectly accepts the following:

  struct F {F(F&&)=delete;};

  template<int=0>
  struct M {
    F f;
    M();
    M(const M&);
    M(M&&);
  };

  template<int I>
  M<I>::M(M&&)=default;

  M<> f() {
    M<> m;
    return m;
  }

The returned value is implicitly moved-from (although adding static_cast<M<>&&>
makes no difference), which should discover that M's move constructor is
invalid because it is defaulted after its first declaration and defined as
deleted, but simply falls back to the copy constructor instead.

If M is not a template, GCC correctly rejects, although the error messages are
a bit confused.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/94231] Invalid move constructor defaulted outside of class as deleted is accepted
  2020-03-20  0:08 [Bug c++/94231] New: Invalid move constructor defaulted outside of class as deleted is accepted herring at lanl dot gov
@ 2020-04-18  0:06 ` mpolacek at gcc dot gnu.org
  2024-02-06 14:36 ` mpolacek at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2020-04-18  0:06 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94231

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mpolacek at gcc dot gnu.org
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2020-04-18
     Ever confirmed|0                           |1

--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Confirmed, thanks for the report.  Not a regression.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/94231] Invalid move constructor defaulted outside of class as deleted is accepted
  2020-03-20  0:08 [Bug c++/94231] New: Invalid move constructor defaulted outside of class as deleted is accepted herring at lanl dot gov
  2020-04-18  0:06 ` [Bug c++/94231] " mpolacek at gcc dot gnu.org
@ 2024-02-06 14:36 ` mpolacek at gcc dot gnu.org
  2024-02-06 16:49 ` cvs-commit at gcc dot gnu.org
  2024-02-06 16:51 ` mpolacek at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2024-02-06 14:36 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94231

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |mpolacek at gcc dot gnu.org

--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Seems to have been fixed by the very recent r14-8759.  I'll add the test.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/94231] Invalid move constructor defaulted outside of class as deleted is accepted
  2020-03-20  0:08 [Bug c++/94231] New: Invalid move constructor defaulted outside of class as deleted is accepted herring at lanl dot gov
  2020-04-18  0:06 ` [Bug c++/94231] " mpolacek at gcc dot gnu.org
  2024-02-06 14:36 ` mpolacek at gcc dot gnu.org
@ 2024-02-06 16:49 ` cvs-commit at gcc dot gnu.org
  2024-02-06 16:51 ` mpolacek at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2024-02-06 16:49 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94231

--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Marek Polacek <mpolacek@gcc.gnu.org>:

https://gcc.gnu.org/g:1befe47f64bf0b964be90730e2cbef550cb6d2b7

commit r14-8830-g1befe47f64bf0b964be90730e2cbef550cb6d2b7
Author: Marek Polacek <polacek@redhat.com>
Date:   Tue Feb 6 11:44:44 2024 -0500

    c++: add fixed test [PR94231]

    I was suprised to find out that r14-8759 fixed this accepts-invalid.

    clang version 17.0.6 rejects the test as well; clang version 19.0.0git
    crashes for which I opened
    <https://github.com/llvm/llvm-project/issues/80869>.

            PR c++/94231

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp0x/deleted17.C: New test.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/94231] Invalid move constructor defaulted outside of class as deleted is accepted
  2020-03-20  0:08 [Bug c++/94231] New: Invalid move constructor defaulted outside of class as deleted is accepted herring at lanl dot gov
                   ` (2 preceding siblings ...)
  2024-02-06 16:49 ` cvs-commit at gcc dot gnu.org
@ 2024-02-06 16:51 ` mpolacek at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2024-02-06 16:51 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94231

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Hopefully fixed.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-02-06 16:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-20  0:08 [Bug c++/94231] New: Invalid move constructor defaulted outside of class as deleted is accepted herring at lanl dot gov
2020-04-18  0:06 ` [Bug c++/94231] " mpolacek at gcc dot gnu.org
2024-02-06 14:36 ` mpolacek at gcc dot gnu.org
2024-02-06 16:49 ` cvs-commit at gcc dot gnu.org
2024-02-06 16:51 ` mpolacek 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).