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

            Bug ID: 87990
           Summary: using Base::operator= wrongly introduces user-declared
                    move assignment operator
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tomas.zencak at seznam dot cz
  Target Milestone: ---

Created attachment 44989
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44989&action=edit
Code failing to compile

Compiling the attached code fails with the following error:
testCompile.cpp:40:16: error: use of deleted function ‘world::world(const
world&)’
  world copyww(w);
                ^
testCompile.cpp:11:8: note: ‘world::world(const world&)’ is implicitly declared
as deleted because ‘world’ declares a move constructor or move assignment
operator
 struct world: public hello

Curiously enough, when the using declaration in class world2 is commented out,
the compilation succeeds and the program produces the expected results.

IMO the code should compile, becuase the C++17 standard (N4659) 10.3.3.15 says
that declarations that would be hidden (which include copy/move assignment
operator) are excluded from the set of declarations brought in by the using
declaration.

Reply via email to