Привет. Вопрос - мелочовка, но хотелось бы уметь. Условно у нас такой код:
int i = 1;
unsigned u = 2;
auto res = i - u + 1LL;
Можно заметить, что результат будет таким: res = long long(unsigned(i-u)+1). Возможно хотелось signed в первом действии, а каст не сделал т.к. не сильно задумывался при написании. Хочется получать предупреждение, когда в выражении более одного действия с участием знакового и беззнакового микса. Компилятор жалуется лишь на сравнение, прогнал через clang-tidy со всеми проверками - нулевой эффект. Кто-нибудь знает способ?
А в целом по вопросу - не очень понятно, почему integer promotion кастит лишь в int, особенно после появления в стандарте long long, по идее нужно кастовать в самый жирный тип. А в до цпп11 почему int, а не long, который может быть больше.
UPDATE:
Свои потребности закрыл вот этой поделкой https://github.com/sfpvk/Wsign-arithmetic