Saya tahu bahwa di C ++ 11 sekarang kita dapat menggunakan using
untuk menulis tipe alias, seperti typedef
s:
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, typedef
lakukan aliasing dengan cara "lemah". Itu tidak membuat jenis baru tetapi hanya nama baru (konversi tersirat di antara nama-nama).
Apakah sama dengan using
atau 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 MyFunc
adalah 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);
?