title: Variadic template recursive return type deduction compilation error
body: <p>Why the code below does not compile?</p>
  
  <pre><code>template &lt;typename T&gt;
  T sum(T t){
      return t;
  }
  
  template &lt;typename T, typename ...U&gt;
  auto sum(T t, U... u) -&gt; decltype(t + sum(u...)) {
      return t + sum(u...);
  }
  
  int main() {
      sum(1, 1.5, 2);
  }
  </code></pre>
  
  <p>Compilation error:</p>
  
  <pre><code>error: no matching function for call to ‘sum(int, double, int)’
   sum(1, 1.5, 2);
  </code></pre>
  
  <p>What would be a good workaround to implement this feature?</p>