Eu sei que no C ++ 11 agora podemos usar usingpara escrever alias de tipo, como typedefs:
typedef int MyInt;
É, pelo que entendi, equivalente a:
using MyInt = int;
E essa nova sintaxe surgiu do esforço de ter uma maneira de expressar " template typedef":
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
Mas, com os dois primeiros exemplos não-modelo, existem outras diferenças sutis no padrão? Por exemplo, typedefs faz alias de maneira "fraca". Ou seja, ele não cria um novo tipo, mas apenas um novo nome (as conversões estão implícitas entre esses nomes).
É o mesmo com usingou gera um novo tipo? Existem diferenças?
typedef void MyFunc(int,int);(que na verdade não parece tão ruim), ouusing MyFunc = void(&)(int,int);
using MyFunc = void(&)(int,int);? significa que MyFuncé uma referência a uma função? e se você omitir o & ?
typedef void (&MyFunc)(int,int);. Se você omitir o &equivalente atypedef void MyFunc(int,int);
typedef void (&MyFunc)(int,int);ouusing MyFunc = void(int,int);?