title: std::is_same for void function(...) and void type?
body: <p>I got this piece of code:</p>
  
  <pre><code>template &lt;class FunctionType&gt; class Entry {
      std::function&lt;FunctionType&gt; internalFunction;
  
      template&lt;class... Arguments&gt;
      auto operator()(Arguments... arguments) -&gt; decltype(internalFunction(arguments...)){
  
          if (std::is_same&lt;decltype(internalFunction(arguments...)), void&gt;::value) {
              internalFunction(arguments...);
          } else {
              auto result = internalFunction(arguments...);
  
              return result;      
          }
      }
  };
  </code></pre>
  
  <p>Entry class is meant to be wrapper for <code>std::function</code>. It works for all return types with one exception - <code>void</code>. I can't get it to work. I have also tried <code>std::is_void</code>, it doesn't return true for function of type <code>void(...)</code>. The same for <code>std::is_same</code>.</p>
  
  <p>How to get around this problem?</p>