Có cách nào để chuyên mẫu như thế này, làm cho chuyên môn chỉ áp dụng nếu T có chức năng thành viên hash
? (Lưu ý đây chỉ là một ví dụ về những gì tôi đang cố gắng làm.Tôi biết rằng nó sẽ có ý nghĩa hơn cho mỗi lớp có hàm hash
để tự kiểm tra nó trong hàm thành viên operator==
, nhưng tôi chỉ muốn biết loại điều này là có thể.)Có anyway để chuyên một mẫu dựa trên các thành viên của một tham số trong C + +?
template <class T>
bool equals(const T &x, const T &y)
{
return x == y;
}
template <class T> // somehow check if T has a member function 'hash'
bool equals<T>(const T &x, const T &y)
{
return x.hash() == y.hash() && x == y;
}
Tôi thích giải pháp tiền C++ 11 nếu có thể.
Bạn có thể sử dụng các khái niệm với khái niệm trình biên dịch thử nghiệmGCC, nhưng đó sẽ không phải là tiêu chuẩn C++ trước một vài năm. – Morwenn