>>> This integer promotion doesn't happen everywhere, namely only but when arithmetic. That's why you get a uint32_t during overload resolution and decltype.



That was mainly what I wanted to know. Is there a reason for not having a unified behaviour like always use the type declared in the struct.