Standard library containers define value_type
with the container type:
copy(cont.begin(),cont.end(), ostream_iterator<typename Container::value_type>(cout," "));
If you are using your own container class, it would be wise to use this convention too:
template <typename T>
class MyContainer
{
public:
typedef T value_type;
....
};