https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80451
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Денис Крыськов from comment #8) > If I understand correctly, > http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1579 is not > implemented in gcc 5.4 and 6.3. Which means some code runs slower than is > should. To be sure that a fast constructor is called, I need to delete slow > constructor. > > Which results in bloated code (each and every class should contain delete > statement). No, if you define a move constructor then the implicitly-declared copy constructor is automatically deleted. So if you think explicitly deleting it is "bloated code" then simply don't do that and let the compiler implicitly delete it for you. > If that's not serious, that's unpleasant. So do "return std::move(b);" as was necessary before 2014 anyway. This is a bug, and it will be fixed, but there's no need to exaggerate its seriousness.