title: error C2677: binary '+=' : no global operator found which takes type 'Movie' (or there is no acceptable conversion)
body: <p>I'm trying to create a generic class which stores <code>Movie</code> objects in an array.
  I want to override the <code>+=</code> and <code>-=</code> operators in order to add or delete an element from the array.</p>
  
  <pre><code>template&lt;typename Element&gt;
  movieArray&lt;Element&gt;&amp; movieArray&lt;Element&gt;::operator-=(int position)
  {
      // some code here...
      return *this;
  }
  
  template&lt;typename Element&gt;
  void movieArray&lt;Element&gt;::deleteElem(int position)
  {
      this-&gt;elements -= position;
  }
  </code></pre>
  
  <p>The delete part works as expected. However, when I do the same thing for the Add operation:</p>
  
  <pre><code>template&lt;typename Element&gt;
  movieArray&lt;Element&gt;&amp; movieArray&lt;Element&gt;::operator+=(const Element &amp;elem)
  {
      elements[lenght++] = elem;
      return *this;
  }
  
  template&lt;typename Element&gt;
  void movieArray&lt;Element&gt;::addElem(const Element &amp;elem)
  {
      resizeArray();
      this-&gt;elements += elem;
  }
  </code></pre>
  
  <p>I receive the following error:</p>
  
  <blockquote>
    <p>error C2677: binary '+=' : no global operator found which takes type 'Movie' (or there is no acceptable conversion)</p>
  </blockquote>
  
  <p>I am not sure why this is happening.</p>
  
  <p>If I change <code>Element</code> to <code>int</code>, like I have at the <code>-=</code> method, the code is compiled.</p>