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.