the message means exactly what it says, the correct syntax is typename list<T>::iterator because T is a dependent type
but there are problems with deriving from std::list: Imagine a user took a reference or a pointer to your list, assumed it is std::list (public inheritance claims that your list IS-A std::list) and did things to it that are expected of std::list? The user might break your sorted order or might attempt to delete the list (in more technical words, your design violates LSP and derives from a class without a virtual destructor)
Consider composition over inheritance: make std::list a member of your class. Or just write a non-member function.