title: Strange behaviour on string::size() in C++ when multiplied by a negative integer
body: <p>Running this code:</p>
  
  <pre><code>#include &lt;string&gt;
  #include &lt;iostream&gt;
  using namespace std;
  int main() {
      string a = "Hello, world!";
      cout &lt;&lt; (-1)*a.size() &lt;&lt; endl;
  }
  </code></pre>
  
  <p>I get:</p>
  
  <pre><code>18446744073709551603
  </code></pre>
  
  <p>which is clearly not what I want. This annoying bug happens every time I try to multiply a string::size() by a negative number (but not for positive!). I can't figure out what is the problem here.</p>