Hi, I tried this :
#ifndef __TEST__
#define __TEST__
namespace std
{
    template<typename T>
    class list;
}
template<typename T>
void Pop(std::list<T> * l)
{
    while(!l->empty())
        l->pop();
}
#endif
and used that function in my main. I get errors. Of course, I know that there are more template params for std::list (allocator I think). But, that is beside the point. Do I have to know the full template declaration of a template class to be able to forward declare it?
EDIT: I wasn't using a pointer before - it was a reference. I'll try it out with the pointer.