Похоже, что унарный побитовый оператор not (~) для uint16_t и uint8_t возвращает int, а не тип своего операнда (то же самое для унарного -). Может ли кто-нибудь объяснить, почему это так?
Неожиданно оказалось, что ~uint16_t(0) ‹ uint16_t(0)
Я использую g++ версии 9.2.1 20191008 (Ubuntu 9.2.1-9ubuntu2) x86_64-linux-gnu