I managed to compile it without warnings on g++. I had to add the typename keyword to both the typedef and the return value. I also had to explicitly specify this as the receiver of all functions called in operator[]. I haven't really figured out why, but it's certainly ugly.
I think you are better off not using inheritance. If you look at standard templates like stack and queue, that builds on another container type, you see that they didn't use inheritance. It's probably a good reason for that. Maybe you should declare your template something like this:
1 2 3 4 5
template< typename T, class Container = std::list<T> >
class exList {
Container c;
// ...
};
It's look like a composition and in this case I need to declare and define methods like push_back, push_front, insert, size, clear... again, but any way thanks a lot.