title: Overloading << operator error
body: <p>I'm getting an error on this operator overload.  Here is the error that I'm getting: </p>
  
  <blockquote>
    <p>Angle.cpp:466: error: ambiguous overload for 'operator&lt;&lt;' in
    '(+out)->std::basic_ostream&lt;_Elem,     _Traits>::operator&lt;&lt; [with
    _Elem = char, _Traits = std::char_traits](((const Angle*)this)->Angle::
        getDegrees()) &lt;&lt; "\37777777660"'</p>
  </blockquote>
  
  <p>Here is my class to overload the <code>&lt;&lt;</code> operator</p>
  
  <pre><code>#ifndef OUTPUTOPS_H
  #define OUTPUTOPS_H 1
  
  #include &lt;ostream&gt;
  #include "BoolOut.h"
  
  // Prints the output of an object using cout. The object
  // must define the function output()
  template&lt; class T &gt;
  std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, const T&amp; x)
  {
      x.output(out);
  
      return out;
  }
  
  #endif // OUTPUTOPS_H
  </code></pre>
  
  <p>The problem happens here:</p>
  
  <pre><code>void Angle::output(std::ostream&amp; out) const
  {
      out &lt;&lt; getDegrees() &lt;&lt; "°";
  }
  </code></pre>
  
  <p>Which oddly enough happens not from <code>getDegrees()</code> but from the string. I tried changing the string to something like, "hello" just to make sure that it wasn't the symbol but I received the same error.</p>
  
  <p>Here is the rest of the code excluding unrelated code:</p>
  
  <pre><code>// Angle.h
  
  #include "OutputOps.h"
  // End user added include file section
  
  #include &lt;vxWorks.h&gt;
  #include &lt;ostream&gt;
  
  class Angle {
  
  public:
      // Default constructor/destructor
      ~Angle();
  
      // User-defined methods
      //
      // Default Constructor sets Angle to 0.
      Angle();
      //
      ...
      // Returns the value of this Angle in degrees.
      double getDegrees() const;
      ...
      // Prints the angle to the output stream as "x°" in degrees
      void output(std::ostream&amp; out) const;
  
  };
  
  #endif // ANGLE_H
  
  
  //  File Angle.cpp
  
  #include "MathUtility.h"
  #include &lt;math.h&gt;
  // End user added include file section
  
  #ifndef Angle_H
  #include "Angle.h"
  #endif
  
  
  Angle::~Angle()
  {
      // Start destructor user section
      // End destructor user section
  }
  
  //
  // Default Constructor sets Angle to 0.
  Angle::Angle() :
  radians( 0 )
  {
  }
  
  ...
  //
  // Returns the value of this Angle in degrees.
  double Angle::getDegrees() const
  {
      return radians * DEGREES_PER_RADIAN;
  }
  
  //
  // Returns the value of this Angle in semicircles.
  ...
  
  //
  // Prints the angle to the output stream as "x°" in degrees
  void Angle::output(std::ostream&amp; out) const
  {
      out &lt;&lt; getDegrees() &lt;&lt; "°";
  }
  </code></pre>