So che in C ++ 11 ora possiamo usare usingper scrivere alias di tipo, come typedefs:
typedef int MyInt;
Da quanto ho capito, equivale a:
using MyInt = int;
E quella nuova sintassi è emersa dallo sforzo di avere un modo di esprimere " template typedef":
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
Ma, con i primi due esempi non template, ci sono altre sottili differenze nello standard? Ad esempio, typedefaliasiamo in modo "debole". Cioè non crea un nuovo tipo ma solo un nuovo nome (le conversioni sono implicite tra quei nomi).
È lo stesso con usingo genera un nuovo tipo? Ci sono differenze?
typedef void MyFunc(int,int);(che in realtà non sembra così male), oppureusing MyFunc = void(&)(int,int);
using MyFunc = void(&)(int,int);? significa che MyFuncè un riferimento a una funzione? cosa succede se si omette il & ?
typedef void (&MyFunc)(int,int);. Se si omette &è equivalente atypedef void MyFunc(int,int);
typedef void (&MyFunc)(int,int);ousing MyFunc = void(int,int);?