title: VS 2017 Error C2665 'qHash': none of the 30 overloads could convert all the argument types
body: <p>I use QHash for a small program.</p>
  
  <p>CompleterData.h</p>
  
  <pre><code>#include &lt;QMap&gt;
  #include &lt;QList&gt;
  #include &lt;QHash&gt;
  #include &lt;QPair&gt;
  #include &lt;QVariant&gt;
  
  class CompleterData
  {
  
  public:
    enum class Type
    {
       Header,       
       SecondHeader, 
       Data,         
       LastUsed      
    };
  
    CompleterData() = default;
  
    QHash &lt; CompleterData::Type, QList&lt;QPair&lt;QString, QVariant&gt;&gt;&gt; data();
    void setData( QHash &lt; CompleterData::Type, QList&lt;QPair&lt;QString, QVariant&gt;&gt;&gt; &amp;p_data );
    void addData( CompleterData::Type &amp;p_type,  QList&lt;QPair&lt;QString, QVariant&gt;&gt; &amp;p_rowData );
  
  private:
    QHash &lt;CompleterData::Type, QList&lt;QPair&lt;QString, QVariant&gt;&gt;&gt; m_data;
  };
  </code></pre>
  
  <p>CompleterData.cpp</p>
  
  <pre><code>QHash &lt; CompleterData::Type, QList&lt;QPair&lt;QString, QVariant&gt;&gt;&gt; CompleterData::data()
  {
    return m_data;
  }
  
  void CompleterData::addData( CompleterData::Type &amp;p_type,  QList&lt;QPair&lt;QString, QVariant&gt;&gt; &amp;p_rowData )
  {
    m_data.insert( p_type, p_rowData );
  }
  
  void CompleterData::setData( QHash &lt; CompleterData::Type, QList&lt;QPair&lt;QString, QVariant&gt;&gt;&gt; &amp;p_data )
  {
    m_data = p_data;
  }
  </code></pre>
  
  <p>I get this error by compiling
  <a href="https://i.stack.imgur.com/HpXtD.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/HpXtD.png" alt="enter image description here"></a></p>
  
  <p>Where do I have error in this case. I know this kind of error is posted here so many times, but each case has it own reason and even for this simple case I still can not find the reason why? I use VS 2017.</p>