The problem is that when I overload Push in useList, the compiler still tries to generate code using the Push from the Ordered namespace, but gives me errors because my List iterators don't have a - operator defined for random access. That is why I needed to overload the Push method so that whent he lcient declares a useList::templateContainer, and then calls Push, it will use the specialized version, rather than the version from Ordered.
But it still tries to generate code for the Ordered Push, even though the method is not needed. If I comment out the Ordered Push, it compiles, but I will need it for other classes that can inherite from Ordered and use it's Push function.
Code:
namespace Base
	{
		template < typename T, class P, class CT >
		class templateContainer
		{
public:
			virtual void Push (const T& t) = 0;
};
}


	namespace Ordered	{

		template < typename T, class P, class CT >
		class templateContainer: public Base::templateContainer< T, P, CT >
		{
			public:

			virtual void Push (const T& t)
			{
//implementation here calls a function that then attempts to call another function that use the - operator on a List<T>::ITerator, but, for my List there is no - operator defined
}};}


	namespace useList
	{
		template <typename T, class P >
		class TPriorityQueue: public Ordered::templateContainer< T, P, List<T> >//specify underlying container as List
		{
			public:


			virtual void Push (const T& t)
			{//implementation that uses forward iterators}
};
}
Thanks in advance.