C ++ 11'de artık s using
gibi 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ı using
yoksa 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);
? MyFunc
bir 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 ?