В MS VC++ издавна есть предупреждение 4127 (conditional expression is constant). Удобная штука, помогает ловить ошибки вроде "if (Enabled && Allowed)", где один из операндов является константой, равной false. Но мешает использовать конструкции вроде "while (true)" или "do ... while (false)" — для них приходится делать костыли.
Сейчас обнаружил, что из компиляторов версии 19 его выпилили для явных констант. То есть, "while (true)" предупреждения не вызывает, но и "while (false)" или "if (false)" тоже проходят на ура, и никаких тебе "unreachable code". Самое смешное, что при отключенной оптимизации для них генерится что-то вроде
xor eax, eax
je SHORT $LN2@f
<здесь код из if/while>
Принудительно включить предупреждение в этих случаях невозможно — ни /Wall, ни __pragma (warning) не помогают.
Это только MS так развлекается, или "по всей стране началось"?