Если я скомпилирую следующую программу с g ++ и включу предупреждения для преобразований (-Wconversion)
#include<stdint.h>
int main() {
uint16_t foo = 1;
foo += 1;
return 0;
}
Я получу предупреждение, предупреждение: преобразование в uint16_t из int может изменить его значение.
Хорошо, если 1 в foo + = 1 интерпретируется как int, но как насчет:
foo+=static_cast<uint16_t>(1);
Я получаю одно и то же предупреждение, оператор не должен работать, когда типы обоихстороны одинаковы, без преобразования в целое число?