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