Giả sử tôi có một số lớp được tạo khuôn mẫu tùy thuộc vào loại T
. T
có thể gần như bất cứ điều gì: int
, int*
, pair <int, int>
hoặc struct lol
; nó không thể là void
, một tham chiếu hoặc bất cứ điều gì cv-đủ điều kiện mặc dù. Đối với một số tối ưu hóa, tôi cần phải biết nếu tôi có thể phân lớp T
. Vì vậy, tôi cần một số loại đặc điểm is_subclassable
, được xác định là kết hợp logic của các đặc điểm cơ bản hoặc thông qua một số thủ thuật SFINAE.Mẫu C++: cách xác định xem loại có phù hợp với phân lớp
Trong ví dụ ban đầu, int
và int*
không thể phân loại được, trong khi pair <int, int>
và struct lol
là.
EDIT: Như litb được chỉ ra bên dưới, các công đoàn cũng không được phân loại và T
cũng có thể là loại liên kết.
Làm cách nào để viết loại đặc điểm tôi cần?
Hmm. Liệu [is_class] (http://msdn.microsoft.com/en-us/library/bb982638.aspx) có đủ không? Không chắc. –