title: Correct way of using invoke_result?
body: <p>On <a href="http://en.cppreference.com/w/cpp/types/result_of" rel="noreferrer">cppreference</a>, it is written that the correct way of using <code>std::result_of</code> is:</p>
  
  <pre><code>template&lt;class F, class... Args&gt;
  std::result_of_t&lt;F&amp;&amp;(Args&amp;&amp;...)&gt; 
  // instead of std::result_of_t&lt;F(Args...)&gt;, which is wrong
    my_invoke(F&amp;&amp; f, Args&amp;&amp;... args) { 
      /* implementation */
  }
  </code></pre>
  
  <p>I was wondering how <code>std::invoke_result_t</code> should be used:
  <code>invoke_result_t</code>:</p>
  
  <pre><code>template&lt;class F, class... Args&gt; 
  std::invoke_result_t&lt;F&amp;&amp;, Args&amp;&amp;...&gt; my_invoke(F&amp;&amp; f, Args&amp;&amp;... args);
  </code></pre>
  
  <p>Or:</p>
  
  <pre><code>template&lt;class F, class... Args&gt; 
  std::invoke_result_t&lt;F, Args...&gt; my_invoke(F&amp;&amp; f, Args&amp;&amp;... args);
  </code></pre>