title: How can I make it work,when passed "rvalue"?
body: <p>code as follows:</p>
  <pre><code>#include &lt;iostream&gt;
  #include&lt;functional&gt;
  
  class TestCase {
  public:
      template&lt;typename ...Args&gt;
      void myfun(Args&amp;&amp; ...args) {
          sayhello(std::forward&lt;Args&gt;(args)...);
      }
  
  private:
      void sayhello(const std::string&amp; v, const std::string&amp; v2) {
          std::cout &lt;&lt;&quot; ---1---- &quot; &lt;&lt; v &lt;&lt; &quot;,&quot; &lt;&lt; v2 &lt;&lt; std::endl;
      }
  
  };
  
  
  template&lt;typename ...Args&gt;
  void test(Args&amp;&amp; ...args) {
      TestCase a;
      auto f = std::bind(&amp;TestCase::myfun&lt;Args...&gt;, &amp;a,std::forward&lt;Args&gt;(args)...);
      f();
  }
  
  
  int main() {
      std::string a = &quot;1&quot;;
      std::string b = &quot;2&quot;;
  
      test(a,b);   //ok
  
      test(&quot;1&quot;,&quot;2&quot;);  //error
     
      return 0;
  }
  </code></pre>
  <p>why std::forward not work? I tried pass value by lvalue and it work,but pass value by rvalue not work.I confused with TestCase::myfun&lt;Args...&gt; ,should it be TestCase::myfun&lt;Args&amp;&amp;...&gt; or something else?</p>