Estoy usando una plantilla para convertir los tipos integrales en una cadena de representación de sus valores binarios. He utilizado el siguiente:C++ límite de unsigned int a través de la plantilla
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;
}
Funciona para int pero no compila con 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
Podría explicar por qué?
EDIT:
Sí, estoy usando VS2010
¿Qué compilador está utilizando? Esto: 'const std :: bitset <33> bs (buffer_u [1]);' produce un error de sobrecarga ambiguo en VC2010 pero compila bien con g ++ 3.4.6. – hmjd