Или скажем совсем безобидный код убираешь, который вообще ничего не должен менять и появляется "may be used unitialized".
Вот тут уменьшил как мог, удаляешь дальше хоть что и уже компилируется: https://godbolt.org/z/s853818zf
в багзиле полно репортов на maybe-unitialized
почему баг? компилятор не всеведущ, он не всегда правильно находит ошибки как и человек
баг потому что если убрать левый код, то ошибка исчезает
понятие "левого кода" неформализовано. вы с компилятором работает в разных концептуальных парадигмах
Проблема в том, что компилятор, при выдаче предупреждения, должен быть уверен в том, что в коде при каких-то обстоятельствах есть баг. В вышеприведённом коде, с точки зрения пользователя, бага быть не может. Проблема или в реализации std, или в компиляторе, который содержит ошибку в анализе
так предупреждение это же как раз предупреждение...
ещё раз - ни компилятор, ни человек не может проверить все возможные варианты выполнения кода (это не совсем тьюринг-полнота, но всё равно требует много времени) warning - как раз сообщение о том, что возможна ошибка. если он уверен что есть ошибка то должен быть error
Я не понимаю, в чем ваш аргумент. Как скажем замена reqb << "GET /" << i << " HTTP/1.1" << "\r\n"; на reqb << "GET /" << i << " HTTP/1.1"; может "легально" (== это не баг компилятора) повлиять maybe-unitialized warning ?
какие-нибудь хитрости в исполнении "<<" ? например передача управления лямбде, созданной при компиляции regexp
Предлагаю перестать фантазировать
Обсуждают сегодня