Saya tahu bahwa di C ++ 11 sekarang kita dapat menggunakan usinguntuk menulis tipe alias, seperti typedefs:
typedef int MyInt;
Apakah, dari apa yang saya mengerti, setara dengan:
using MyInt = int;
Dan sintaks baru itu muncul dari upaya untuk memiliki cara untuk mengekspresikan " template typedef":
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
Tetapi, dengan dua contoh non-templat pertama, apakah ada perbedaan halus lainnya dalam standar? Misalnya, typedeflakukan aliasing dengan cara "lemah". Itu tidak membuat jenis baru tetapi hanya nama baru (konversi tersirat di antara nama-nama).
Apakah sama dengan usingatau apakah itu menghasilkan tipe baru? Apakah ada perbedaan?
typedef void MyFunc(int,int);(yang sebenarnya tidak terlihat buruk), atauusing MyFunc = void(&)(int,int);
using MyFunc = void(&)(int,int);? Apakah maksudnya MyFuncadalah referensi ke suatu fungsi? bagaimana jika Anda menghilangkan & ?
typedef void (&MyFunc)(int,int);. Jika Anda menghilangkan &itu setara dengantypedef void MyFunc(int,int);
typedef void (&MyFunc)(int,int);atau tidakusing MyFunc = void(int,int);?