title: c++ cross platform way to define 64bit unsigned integer
body: <p>Right now I'm working on a project that extensively uses 64bit unsigned integers in many parts of the code. So far we have only been compiling with gcc 4.6 but we are now porting some code to windows. It's crucial that these unsigned ints are 64bits wide. It has been suggested that we could use long long but it's not good if long long happens to be bigger than 64bits, we actually want to have a guarantee that it will be 64 bits and writing something like <code>static_assert(sizeof(long long) == 8)</code> seems to be a bit of a code smell. </p>
  
  <p>What is the best way to define something like uint64 that will compile across both gcc and msvc without needing to have different code syntax used everywhere?</p>