title: error: no matching function for call to 'make_pair'
body: <p>I want to put two local variable into a pair and return it, this is my code: </p>
  
  <pre><code>#include &lt;utility&gt;
  class Foo {
  
  };
  
  class Bar {
  
  };
  
  std::pair&lt;Foo, Bar&gt; test() {
    Foo foo;
    Bar bar;
    return std::make_pair&lt;Foo, Bar&gt;(foo, bar);
  }
  </code></pre>
  
  <p>and I got </p>
  
  <blockquote>
  <pre><code>main.cpp:92:10: error: no matching function for call to 'make_pair'   
  /usr/bin/../lib/gcc/x86_64-linux-gnu/7.4.0/../../../../include/c++/7.4.0/bits/stl_pair.h:524:5:
  note: candidate function not viable: no known conversion from 'Foo' to 'Foo &amp;&amp;' for 1st argument
      make_pair(_T1&amp;&amp; __x, _T2&amp;&amp; __y)
  </code></pre>
  </blockquote>
  
  <p>and if I use <code>return std::make_pair&lt;Foo, Bar&gt;(std::move(foo), std::move(bar));</code>, the compile will success. So what do I miss?</p>