C ++ 11'de artık s usinggibi tür diğer adları yazmak için kullanabileceğimizi biliyorum typedef:
typedef int MyInt;
Anladığım kadarıyla:
using MyInt = int;
Ve bu yeni sözdizimi, " template typedef" ifadesini ifade etme yoluna sahip olma çabasından kaynaklandı :
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
Ancak, şablon olmayan ilk iki örnekte, standartta başka ince farklar var mı? Örneğin, typedeförtüşme "zayıf" bir şekilde yapılır. Yani yeni bir tür oluşturmaz, sadece yeni bir ad oluşturur (bu adlar arasında dönüşümler örtülüdür).
Aynı mı usingyoksa yeni bir tür mü oluşturuyor? Herhangi bir fark var mı?
typedef void MyFunc(int,int);(ki aslında kötü görünmüyor) veyausing MyFunc = void(&)(int,int);
using MyFunc = void(&)(int,int);? MyFuncbir işleve başvuru anlamına mı geliyor? & 'ı atlarsanız ne olur ?
typedef void (&MyFunc)(int,int);. Eğer atlarsanız &o eşdeğerdirtypedef void MyFunc(int,int);
typedef void (&MyFunc)(int,int);ya dausing MyFunc = void(int,int);mı tercih edersiniz ?