На что здесь жалуется g cc -Wstringop-overflow? - PullRequest
2 голосов
/ 27 марта 2020

Следующий код (уменьшен из более крупного, более разумного образца):

#include <vector>

void shrink(std::vector<int>& v) {
    while (v.size() > 0) {
        v.resize(v.size() - 1);
    }
}

Приводит g cc 7,3 к выдаче этого предупреждения ( godbolt ):

In function 'void shrink(std::vector<int>&)':
cc1plus: warning: 'void* __builtin_memset(void*, int, long unsigned int)':
specified size 18446744073709551612 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=]

Я почти час смотрел на этот код с коллегой, и он мне кажется правильным; на что ж cc жалуется?

1 Ответ

2 голосов
/ 27 марта 2020

мне это кажется правильным

Пример верный.

На что ж cc жалуется?

Это ошибка компилятора. Вот это bugzilla . Ошибка, кажется, исправлена ​​в G CC 8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...