So che in C ++ 11 ora possiamo usare using
per scrivere alias di tipo, come typedef
s:
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, typedef
aliasiamo in modo "debole". Cioè non crea un nuovo tipo ma solo un nuovo nome (le conversioni sono implicite tra quei nomi).
È lo stesso con using
o 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);
?