предполагая, что переполнение со знаком не происходит в операторе if

Почему появляется это предупреждение? Это не совсем предположение, если я проверю границы. И как исправить?

Еслиnum_actions_to_skip установлен на 1, вместо 2 ошибка исчезнет.

Спасибо

error: assuming signed overflow does not occur when assuming that (X - c) <= X is always true [-Werror=strict-overflow]
cc1plus: all warnings being treated as errors

Наif (loc >= 0 && loc < action_list.count()) {

const QList<QAction *> &action_list = tool_menu->actions();
static const int num_actions_to_skip = 2;
const int loc = action_list.count() - num_actions_to_skip;
if (loc >= 0 && loc < action_list.count()) {
    tool_menu->insertAction(action_list.at(loc),
                            action);
}

Началось с

Q_ASSERT_X(i >= 0 && i < p.size()

в qlist.h: 454, который выполняет ту же проверку, а также выдает эту ошибку, просто

tool_menu->insertAction(action_list.at(action_list.count() - 2),
                                action);

Ответы на вопрос(3)

Ваш ответ на вопрос