Excuse the last message , as I was saying, I have defined this pair of templates :

template<class T>
inline
CArchive& AFXAPI operator >>(CArchive& ar, T& t)
{
...
}

template<class T>
CArchive& AFXAPI operator >>(CArchive& ar, std::vector<T>& v)
{
...
}

when I compile:

...
std::vector<short> m_vector;
ar >> m_vector;
...

I get the following error :
error C2667: '>>' : none of 2 overload have a best conversion
error C2593: 'operator >>' is ambiguous

why it is ambiguous? it is not the second version a better conversion? and how do I get rid of it?

adios!