ฉันรู้ว่าใน C ++ 11 ตอนนี้เราสามารถใช้usingเพื่อเขียนนามแฝงประเภทเช่นtypedefs:
typedef int MyInt;
คือจากสิ่งที่ฉันเข้าใจเทียบเท่ากับ:
using MyInt = int;
และไวยากรณ์ใหม่นั้นเกิดขึ้นจากความพยายามที่จะมีวิธีในการแสดงออก " template typedef":
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
แต่ด้วยสองตัวอย่างแรกที่ไม่ใช่แม่แบบมีความแตกต่างเล็กน้อยอื่น ๆ ในมาตรฐานหรือไม่ ตัวอย่างเช่นใช้typedefนามแฝงด้วยวิธี "อ่อนแอ" นั่นคือมันไม่ได้สร้างประเภทใหม่ แต่มีเพียงชื่อใหม่เท่านั้น (การแปลงนั้นมีนัยยะระหว่างชื่อเหล่านั้น)
มันเหมือนกันกับusingหรือสร้างชนิดใหม่หรือไม่ มีความแตกต่างหรือไม่?
typedef void MyFunc(int,int);(ซึ่งจริงๆแล้วดูไม่เลว) หรือusing MyFunc = void(&)(int,int);
using MyFunc = void(&)(int,int);? หมายความว่าMyFuncเป็นการอ้างอิงถึงฟังก์ชั่นหรือไม่? สิ่งที่ถ้าคุณละเว้น& ?
typedef void (&MyFunc)(int,int);มันเทียบเท่ากับ หากคุณละเว้นสิ่ง&นี้ก็เท่ากับtypedef void MyFunc(int,int);
typedef void (&MyFunc)(int,int);หรือusing MyFunc = void(int,int);?