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

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).