Comments 6
У читателя также может возникнуть вопрос: "Зачем было заменять emplace_back на push_back"?
У читателя совсем другой вопрос: зачем было добавлять std::make_unique
? Ведь вы говорите
Контейнер modificators – это двусвязный список "умных" указателей std::unique_ptr
Значит, метод push_back
уже принимает std::unique_ptr
.
Хотя, в ответ наверняка будет что-то, сводящееся к "явное лучше неявного"...
Читатель, очевидно, не знает, что у std::unique_ptr
нет конвертирующего конструктора из raw pointer:
std::vector<std::unique_ptr<int>> v;
v.emplace_back(new int{1}); // OK
v.push_back(new int{1}); // Ашипка: no matching function for call to 'push_back' ... no known conversion from 'int *' to 'value_type' (aka 'std::unique_ptr<int>')
v.push_back(std::make_unique<int>(1)); // OK
поэтому тупо заменить вызовemplace_back()
на push_back()
с тем же самым аргументом в данном случае не выйдет.
Большое спасибо за проведённый анализ! У нас даже есть таск для прогонки PVS-Studio, но пока всё руки не доходили)
Над проектом трудится большая команда разработчиков
Ах, если б это было так... На самом деле на текущий момент команда очень маленькая, за последние полгода подавляющее большинство кода написано всего одним человеком. Всех желающих ждём "к столу"!
Всегда пожалуйста! Это Вам спасибо за Ваши труды.
Я всё же рекомендую, если дойдут руки, самим провести анализ и разобрать срабатывания, т.к. в статье описаны далеко не все случаи. Также, если времени разбираться со всеми срабатываниями пока нет, можно подавить существующие и разбирать только относящиеся к новому коду, а к старым возвращаться по возможности.
Спасибо! Ребята уже что-то посмотрели, не уверен, правда, вливали ли какие-то фиксы
Герои Кода и Магии: анализ игрового движка VCMI