title: Typedefs and template specialization
body: <p>Consider this code:</p>
  
  <pre><code>typedef int type1;
  typedef int type2;
  
  template &lt;typename&gt;
  struct some_trait;
  
  template &lt;&gt;
  struct some_trait&lt;type1&gt;
  {
      static const int something=1;
  };
  
  template &lt;&gt;
  struct some_trait&lt;type2&gt;
  {
      static const int something=2;
  };
  </code></pre>
  
  <p>It fails because what the compiler sees is two specializations of <code>some_trait&lt;int&gt;</code>.</p>
  
  <p>What's the best way around this?</p>