Với mẫu này:Sử dụng enable_if để tùy thêm một thành viên struct
template <class A>
struct Something {
... // members common to all template instantiations for all A types
SpecialType member; // but not this - I want this to be conditional...
}
... Tôi muốn sử dụng "enable_if" để có thành viên SpecialType tồn tại có điều kiện; nghĩa là, chỉ khi mẫu được khởi tạo với kiểu A = SpecialCase1 hoặc SpecialCase2. Trong tất cả các trường hợp khác, tôi muốn thành viên SpecialType bị thiếu.
Trong trường hợp bạn tự hỏi tại sao, đây là về tối ưu hóa - nghĩa là không mang tải trọng vô ích trong cấu trúc. Tôi là một newbie trong metaprogramming mẫu, nhưng tôi hiểu tôi cần "enable_if" và hai "is_same" bằng cách nào đó - không chắc chắn chính xác như thế nào, mặc dù ...
EDIT: Làm điều đó với chung C++ (tức là không có đặc hiệu tăng cường) sẽ là một lợi thế.
'if_' thường được gọi là' std :: conditional'. –
@KerrekSB: Ah cảm ơn, tôi là một phần của một bộ đếm thời gian cũ tôi sợ. Trong Boost MPL, nó là 'if_' :) Tôi chưa đào sâu trong thư viện mới của C++ 11:/ –