Tôi chuyên 'ít' (vị ngữ) cho một kiểu dữ liệu.Chuyên môn về 'mẫu <class _Tp> struct std :: less' trong không gian tên khác nhau
Mã này trông như thế này:
template<>
struct std::less<DateTimeKey>
{
bool operator()(const DateTimeKey& k1, const DateTimeKey& k2) const
{
// Some code ...
}
}
Khi biên dịch (g ++ 4.4.1 trên Ubuntu 9.10), tôi nhận được lỗi:
Chuyên ngành 'mẫu struct std :: ít' trong khác nhau namespace
tôi đã làm một số nghiên cứu và phát hiện ra rằng có một 'workaround' có liên quan đến gói các chuyên môn hóa trong một namespace std - tức là thay đổi mã để:
namespace std {
template<>
struct less<DateTimeKey>
{
bool operator()(const DateTimeKey& k1, const DateTimeKey& k2) const
{
// Some code ...
}
}
}
thực sự, tắt trình biên dịch lên. Tuy nhiên, giải pháp đó là từ một bài đăng 5 tuổi (Bởi 'tuyệt vời' Victor Bazarof không ít [chơi đùa ngoài ý muốn]). Đây có phải là sửa chữa vẫn là con đường để đi, hoặc là có một cách tốt hơn để giải quyết này, hoặc là "cách cũ" vẫn còn hợp lệ?
Quá tải toán tử 'DateTimeKey :: – kennytm