Sé que en C ++ 11 ahora podemos usar using
para escribir alias de tipo, como typedef
s:
typedef int MyInt;
Es, por lo que entiendo, equivalente a:
using MyInt = int;
Y esa nueva sintaxis surgió del esfuerzo por tener una forma de expresar " template typedef
":
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
Pero, con los dos primeros ejemplos que no son de plantilla, ¿hay otras diferencias sutiles en el estándar? Por ejemplo, typedef
s aliasing de una manera "débil". Es decir, no crea un nuevo tipo, sino solo un nuevo nombre (las conversiones están implícitas entre esos nombres).
¿Es lo mismo con using
o genera un nuevo tipo? ¿Hay alguna diferencia?
typedef void MyFunc(int,int);
(que en realidad no se ve tan mal), ousing MyFunc = void(&)(int,int);
using MyFunc = void(&)(int,int);
? MyFunc
Qué significa es una referencia a una función? ¿Qué pasa si omite el & ?
typedef void (&MyFunc)(int,int);
. Si omite el &
es equivalente atypedef void MyFunc(int,int);
typedef void (&MyFunc)(int,int);
ousing MyFunc = void(int,int);
?