title: unsigned long long conflict with uint64_t?
body: <p>We use template specialization for some type parameter like</p>
  
  <pre><code>class my_template_class&lt;uint64_t M&gt;: public my_template_class_base&lt;uint64_t&gt; {
   ....
  }
  
  class my_template_class&lt;unsigned long long,M&gt;: public my_template_class_base&lt;unsigned long long&gt; {
   ....
  }
  </code></pre>
  
  <p>This is working perfectly with 64-bit compilation with gcc. While when we try the 32 bit mode, it reports "previous definition" for above two classes.</p>
  
  <p>So <code>unsigned long long</code> is the same as <code>uint64_t</code> in the 32-bit compilation but not in 64-bit compliation?</p>
  
  <p>The compilation difference is the <code>CXX</code> flag <code>-m32</code> and <code>-m64</code></p>