Tôi đang sử dụng mẫu để chuyển đổi các loại tích phân thành một chuỗi biểu diễn các giá trị nhị phân của chúng. Tôi sử dụng như sau:Giới hạn C++ của mẫu không dấu int thông qua mẫu
template<typename T>
std::string ToBinary(const T& value)
{
const std::bitset<std::numeric_limits<T>::digits + 1> bs(value);
const std::string s(bs.to_string());
return s;
}
Nó hoạt động cho int nhưng không biên dịch với unsigned int:
unsigned int buffer_u[10];
int buffer_i[10];
...
ToBinary(buffer_i[1]); //compile and works
ToBinary(buffer_u[1]); //doesn't compile -- ambiguous overload
Ông có thể giải thích tại sao?
EDIT:
Vâng, tôi đang sử dụng VS2010
Bạn đang sử dụng trình biên dịch nào? Điều này: 'const std :: bitset <33> bs (buffer_u [1]);' tạo ra lỗi quá tải không rõ ràng trên VC2010 nhưng biên dịch tốt với g ++ 3.4.6. – hmjd