title: unary 'operator' does not define in C++
body: <blockquote>
    <p>unary 'operator' : 'type' does not define this operator or a conversion to a type acceptable to the predefined operator</p>
  </blockquote>
  
  <p>Got a trouble when using TriMesh::VertexHandle as the key value of map in c++.</p>
  
  <pre><code>map&lt;TriMesh::VertexHandle, TriMesh::VertexHandle&gt; intvmap;
      for (vector&lt;TriMesh::VertexHandle&gt;::iterator it = oldVertices.begin(); it != oldVertices.end(); ++it){
  
          bool isInternal = mesh.property(vIsInternal, *it);
          if (isInternal) {
              TriMesh::Point pos = mesh.point(*it);
              TriMesh::VertexHandle mirror = mesh.add_vertex(pos - z * 2 * mesh.property(vHeight, *it));
              mesh.property(vHeight, mirror) = -mesh.property(vHeight, *it);
              mesh.property(vIsInternal, mirror) = true;
              intvmap.insert((*it), mirror);
          }
      }
  </code></pre>
  
  <p>insert() didn't work and got the error above.</p>
  
  <pre><code>    template&lt;class _Iter&gt;
      void insert(_Iter _First, _Iter _Last)
      {   // insert [_First, _Last) one at a time
      _DEBUG_RANGE(_First, _Last);
      for (; _First != _Last; ++_First)
  
          emplace_hint(end(), *_First);
      }
  </code></pre>
  
  <p>I think the problem is about the operator++, so I add the code in the header file</p>
  
  <pre><code>TriMesh::VertexHandle&amp; operator++(TriMesh::VertexHandle&amp; vh){ //++A
      vh.__increment();
      return vh;
  }
  TriMesh::VertexHandle operator++(TriMesh::VertexHandle &amp; p_oRight, int) // A++
  {
      TriMesh::VertexHandle &amp; copy = p_oRight;
      copy.__increment();
      return copy;
  }
  </code></pre>
  
  <p>However, the error still exists.
  I would like to know if there is a solution.</p>