The obvious stuff has already been described in details:
But the methods you choose to implement??
- Destructor.
- Not required compiler will generate that for you.
- The two different versions of operator[] are pointless
- Also you should be uisng std::list::size_type as the index
- Unless you intend to support negative indexes.
- There are no const versions of operator[]
- If you are going to implement [] you should also do at()
- You missed out all the different ways of constructing a list.
- Containers should define several types internally
- see http://www.sgi.com/tech/stl/Container.html