> You don't want to delete the whole list in the node's destructor, else you can't remove a node.
You can, you just need to `unlink' it first.
But it's a good catch, you are also causing an stack overflow
If you use a header cell (instead of a pointer) `push_back()' simplifies
1 2 3 4 5 6 7 8 9 10
void list::push_back(const T &item){
last->next = new node(item, &head); //circular
last = last->next;
}
list::list(),
last(&head)
{
head.next = &head; //circular
}