Sé que en C ++ 11 ahora podemos usar usingpara escribir alias de tipo, como typedefs:
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, typedefs 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 usingo 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);? MyFuncQué 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);?