https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93222
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- Your grabListTail function fails to check if this->empty() which means that this cast might be undefined: Node* localTail = static_cast<Node*>(_xHead.pPrev); When this->empty() is true _xHead.pPrev == _xHead which is of type DListNode, not Node, so the cast is invalid.