title: How can I do make_pair within a template class method using unordered_multimap?
body: <p>I have the following code, I know I am almost reimplementing the container, but I want to do like this, I will have more specific methods and 
  I don't want to repeat code for multimaps of different types:</p>
  
  <pre><code>template&lt;class TYPE&gt;
  class MapTemplate {
  public:
      typedef typename std::unordered_multimap &lt;QString, QString&gt;::iterator iterator;
  
  void addElement(const QString&amp; elementName, const TYPE&amp; T) {
      unorderedMultiMap.insert(std::make_pair&lt;QString, TYPE&gt;(elementName, T));
  }
  std::pair&lt;iterator, iterator&gt; getEqual_range(const QString&amp; elementName) {
      return unorderedMultiMap.equal_range(elementName);
  }
  int removeElement(const QString&amp; elementName) {
      return unorderedMultiMap.erase(elementName);
  }
  int getNumberOfElements() const {
      return unorderedMultiMap.size();
  }
  bool isMapEmpty() const {
      return unorderedMultiMap.isEmpty();
  }
  iterator isElementInMap(const QString&amp; elementName) const {
      return unorderedMultiMap.find(elementName);
  }
  
  private:
      std::unordered_multimap&lt;QString, TYPE&gt; unorderedMultiMap;
  };
  </code></pre>
  
  <p>I have two questions related:
  If I try <code>userProgMap.addElement(userName, programName);</code> being <code>MapTemplate&lt;QString&gt; userProgMap</code> and <em>userName &amp; programName both QString</em>, I get an error saying <strong>cannot convert argument from QString to _Ty1&amp;&amp;</strong>.</p>
  
  <p>On the other hand, how could I have an iterator like that:</p>
  
  <pre><code>typedef typename std::unordered_multimap &lt;QString, TYPE&gt;::iterator iterator;
  </code></pre>
  
  <p>Would it be possible?. That also shows an error, I must use <code>&lt;QString, QString&gt;</code></p>
  
  <p>Thank you.</p>