Ich weiß, dass wir in C++11 jetzt die Option using
um Typ-Alias zu schreiben, wie typedef
s:
typedef int MyInt;
Ist, soweit ich weiß, gleichbedeutend mit:
using MyInt = int;
Und diese neue Syntax entstand aus dem Bestreben, eine Möglichkeit zu haben, "Template typedef" auszudrücken:
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
Aber gibt es bei den ersten beiden Beispielen, die nicht aus dem Muster stammen, noch andere feine Unterschiede in der Norm? Zum Beispiel, typedef
s machen Aliasing auf eine "schwache" Weise. Das heißt, es wird kein neuer Typ, sondern nur ein neuer Name erzeugt (Konvertierungen zwischen diesen Namen sind implizit).
Ist es dasselbe mit using
oder erzeugt es einen neuen Typ? Gibt es irgendwelche Unterschiede?