C Order of Overloaded Operators
===

I have two instances where I am overloading the << operator and it is always defaulting to the first one displayed below is there any way I can get the second function recognized for the custom class Shape?

Thank you,

John

First Overload:
  
        template <class T>
        ostream & operator << (ostream & out, vector <T> & vec)
        {
          for (unsigned int i = 0;i<vec.size()-1; i++) {
            out << vec[i] << " ";
          }
          out << vec[vec.size() - 1];

          return out;
        }

Second Overload:
  
        ostream & operator << (ostream & out, vector <Shape> & vec)
        {
          for (unsigned int i = 0;i<vec.size(); i++)
          {
            out << "##" << vec[i].get_shape_type << i << endl << vec[i] << endl;
          }
          return out;
        }