sé que en C++ 11 ahora podemos utilizar para escribir using
tipo de alias, como typedef
s:¿Cuál es la diferencia entre 'typedef' y 'using' en C++ 11?
typedef int MyInt;
Es, por lo que entiendo, lo que equivale a:
using MyInt = int;
Y eso nueva sintaxis surgido del esfuerzo para tener una forma de expresar "template typedef
":
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
Pero, con los dos primeros no t ejemplos concretos, ¿hay otras diferencias sutiles en el estándar? Por ejemplo, typedef
s aliasing de una manera "débil". Es decir, no crea un tipo nuevo, sino solo un nombre nuevo (las conversiones están implícitas entre esos nombres).
¿Es lo mismo con using
o genera un nuevo tipo? ¿Hay alguna diferencia?
Yo personalmente prefiero la nueva sintaxis, porque es mucho más similar a la asignación de variables regular, mejorar la legibilidad. Por ejemplo, ¿prefieres 'typedef void (& MyFunc) (int, int);' o 'usando MyFunc = void (int, int);'? –
Estoy completamente de acuerdo, solo uso la nueva sintaxis ahora. Es por eso que preguntaba, para estar seguro de que realmente no hay diferencia. – Klaim
@MatthieuM. esos dos son diferentes por cierto. Debería ser 'typedef void MyFunc (int, int);' (que en realidad no se ve tan mal), o 'usando MyFunc = void (&) (int, int);' –