[Bug c++/87990] New: using Base::operator= wrongly introduces user-declared move assignment operator
tomas.zencak at seznam dot cz
gcc-bugzilla@gcc.gnu.org
Mon Nov 12 16:53:00 GMT 2018
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.
More information about the Gcc-bugs
mailing list