title: C++: Is there any reason to use uint64_t instead of size_t
body: <p>My understanding of <code>size_t</code> is that it will be large enough to hold any (integer) value which you might expect it to be required to hold. (Perhaps that is a poor explanation?)</p>
  
  <p>For example, if you were using something like a for loop to iterate over all elements in a vector, <code>size_t</code> would typically be 64 bits long (or at least on my system) in order that it can hold all possible return values from vector.size().</p>
  
  <p>Or at least, I think that's correct?</p>
  
  <p>Therefore, is there any reason to use A rather than B:</p>
  
  <p>A: <code>for(uint64_t i = 0; i &lt; v.size(); ++ i)</code></p>
  
  <p>B: <code>for(size_t i = 0; i &lt; v.size(); ++ i)</code></p>
  
  <p>If I'm wrong with my explanation or you have a better explanation, please feel free to edit.</p>
  
  <p>Edit: I should add that my understanding is that <code>size_t</code> behaves like a normal unsigned integer - perhaps that is not correct?</p>