Thanks, I can remove the extra delete head and delete tail now. Say, I wanted to create a list like the stl_list, but I don't want to blantly copy them. So would this work?
Code:
struct Node {
  template<typename T>
  struct NodeData {
    T data;
    NodeData(T element) { data = element; }
  };
  Node* prev;
  Node* next;
  NodeData data;
};
I wanted to compose a template inside a normal struct or class, can this work? I haven't tried yet cause I need to figure some way to seperate normal types from template types.

I like the stl design because they can hide their implementation.