эти условные конструкции рассматривают все возможные варианты, то есть выход из этой функции есть. Я понял,чтобы прям скомпилировалось, нужно в конце еще добавить else {return false;} , то есть компьютер не умеет распознавать, случится ли выход или нет и поэтому каждый if с return должен сопровождаться с else return?
Без else { return false; } вполне можно придумать входные данные, при которых у вас функция ничего не вернет
а как он это понимает на этапе компиляции?
Видит что может выйти из цикла без return и может не войти в if (!stack.size()), соответственно, может ничего не вернуть
Еще есть back() у вектора, чтобы не громоздить [v.size()-1]
там же два случая, если стек не пустой/вершина стека не совпадает с текущим символом - оба отлавливаеюся в else {..} внутри for
не знал, спасибо.
А вот настолько умный анализ не всегда возможен. Этож компилятор догадаться до этого ещё должен
хм, как и я предполагал это случаем не warning, о котором вы говорили?
Эт варнинг, да. Там снизу прост написано, что этот ключик, который все предупреждения считает ошибками, выставлен
Обсуждают сегодня