Может кто-нибудь объяснить, почему вышеприведенная ошибка?
Прежде всего, вы не можете напрямую сравнить uchar
с unsigned char
, потому что это два разных типа и неявного преобразования не существует.Вы можете перегрузить operator==
, но вместо этого вы можете предоставить оператора преобразования, который будет представлять ваш uchar
как unsigned char
, когда это необходимо:
operator unsigned char()
{
return c_;
}
Таким образом, он будет соответствовать вашим ожиданиям .
почему Clang сообщает c2 как целое число?
Что касается того, почему Clang считает, что unsigned char
- это int
, это выглядит как ошибка, так как не делает этого в более поздних версиях.