https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92727
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- The downside of this (and your suggestion to remove push_back from the overload set) is that you no longer get told the copy constructor is deleted and why. That note is only printed when the copy constructor is needed, but this approach means it never gets used, because the assertions stops it getting that far.