С
Object& a = list.front();
вы делаете a
reference передним элементом списка. Когда вы позже вставляете передний элемент, он разрушается, оставляя вам ссылку на несуществующий объект.
Вы должны скопировать элемент вместо
Object a = list.front();
Или, возможно, ход это
Object a = std::move(list.front());