Tôi biết rằng trong C ++ 11 bây giờ chúng ta có thể sử dụng using
để viết bí danh, như typedef
s:
typedef int MyInt;
Là, từ những gì tôi hiểu, tương đương với:
using MyInt = int;
Và cú pháp mới đó xuất hiện từ nỗ lực để có cách diễn đạt " template typedef
":
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
Nhưng, với hai ví dụ phi mẫu đầu tiên, có sự khác biệt tinh tế nào khác trong tiêu chuẩn không? Ví dụ: typedef
s làm răng cưa theo cách "yếu". Đó là nó không tạo ra một loại mới mà chỉ có một tên mới (chuyển đổi được ẩn giữa các tên đó).
Nó giống với using
hoặc nó tạo ra một loại mới? Có sự khác biệt nào không?
typedef void MyFunc(int,int);
(mà thực sự trông không tệ lắm), hoặcusing MyFunc = void(&)(int,int);
using MyFunc = void(&)(int,int);
? nó có nghĩa MyFunc
là một tham chiếu đến một chức năng? Điều gì nếu bạn bỏ qua & ?
typedef void (&MyFunc)(int,int);
. Nếu bạn bỏ qua &
nó tương đương vớitypedef void MyFunc(int,int);
typedef void (&MyFunc)(int,int);
hayusing MyFunc = void(int,int);
?