Ich weiß, dass wir in C ++ 11 jetzt Typalias using
schreiben können, wie typedef
s:
typedef int MyInt;
Ist nach meinem Verständnis gleichbedeutend mit:
using MyInt = int;
Und diese neue Syntax entstand aus dem Bestreben heraus, " template typedef
" auszudrücken :
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
Gibt es bei den ersten beiden Beispielen ohne Vorlage noch andere subtile Unterschiede im Standard? Zum Beispiel führen typedef
wir Aliasing auf "schwache" Weise durch. Das heißt, es wird kein neuer Typ erstellt, sondern nur ein neuer Name (Konvertierungen sind zwischen diesen Namen implizit).
Ist es dasselbe mit using
oder generiert es einen neuen Typ? Gibt es Unterschiede?
typedef void MyFunc(int,int);
(was eigentlich nicht so schlecht aussieht), oderusing MyFunc = void(&)(int,int);
using MyFunc = void(&)(int,int);
? Bedeutet das, dass es sich MyFunc
um einen Verweis auf eine Funktion handelt? Was ist, wenn Sie das & weglassen ?
typedef void (&MyFunc)(int,int);
. Wenn Sie das weglassen, ist &
es gleichbedeutend mittypedef void MyFunc(int,int);
typedef void (&MyFunc)(int,int);
oderusing MyFunc = void(int,int);
?