https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108111
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Marc Poulhiès from comment #1) > I'll need to read a bit more about the 8 (default move assignment op being > deleted). Lexer has this member: buffered_queue<int, InputSource &> input_queue; That has a member of type InputSource& which means it is not assignable, so Lexer is not assignable either. Are you sure you want a reference there? Using std::reference_wrapper<InputSource> would work without needing to change buffered_queue.