title: Warning for overflow in std::accumulate
body: <p>Is there any way to get a warning for std::accumulate when the type of the <code>init</code> arg doesn't match the contained type you are accumulating over? e.g. in this example we shouldn't accumulate a 32 bit value when iterating over a vector of 64 bit ints. But it's pretty easy to just pass in 0 and forget to pass 0LL. Is there any way to get a warning for this? <code>-Wall -Wextra -Wconversion</code> doesn't seem to help. I also tried looking for clang tidy checks that may work, but didn't find anything there either.</p>
  <pre><code>std::vector&lt;long long&gt; a = {10000000000, 10000000000};
  cout &lt;&lt; std::accumulate(a.begin(), a.end(), 0) &lt;&lt; &quot;\n&quot;; // overflows
  cout &lt;&lt; std::accumulate(a.begin(), a.end(), 0LL) &lt;&lt; &quot;\n&quot;; // prints 20000000000
  </code></pre>