title: What is the difference between 'typedef' and 'using' in C++11?
body: <p>I know that in C++11 we can now use <code>using</code> to write type alias, like <code>typedef</code>s:</p>
  <pre><code>typedef int MyInt;
  </code></pre>
  <p>Is, from what I understand, equivalent to:</p>
  <pre><code>using MyInt = int;
  </code></pre>
  <p>And that new syntax emerged from the effort to have a way to express &quot;template typedef&quot;:</p>
  <pre><code>template&lt; class T &gt; using MyType = AnotherType&lt; T, MyAllocatorType &gt;;
  </code></pre>
  <p>But, with the first two non-template examples, are there any other subtle differences in the standard? For example, <code>typedef</code>s do aliasing in a &quot;weak&quot; way. That is it does not create a new type but only a new name (conversions are implicit between those names).</p>
  <p>Is it the same with <code>using</code> or does it generate a new type? Are there any differences?</p>