Список хранит свои элементы в прерывистых порциях памяти, которые освобождаются при удалении элемента из списка. Таким образом, ссылка (которая реализована просто как указатель) указывает на элемент, память которого уже была освобождена.
Более простой способ удалить данный элемент из списка - заставить итератор указывать на него и использовать метод
std::list::iterator = /*somehow get the iterator to the 8th element*/ <br>
yourList.erase(8th_element_iterator);
Первый шаг (получение итератора для 8-го элемента) может быть выполнен, например, путем получения итератора начала списка и продвижения его на 7 позиций вперед:
std::list::iterator first_iter = yourList.begin(); <br>
std::list::iterator 8th_iter = std::advance(first_iter, 7);