1275 Stimmen

Was ist der Unterschied zwischen "typedef" und "using" in C++11?

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X