← Все новости
range-for перестал ронять программу на временном объекте, зато теперь дольше держит мьютекс

range-for перестал ронять программу на временном объекте, зато теперь дольше держит мьютекс

range-based for в C++ выглядит безопасным местом, пока в него не попадает временный объект с внутренней ссылкой. Такой код может годами работать в продакшене, а затем начать читать освобождённую память после смены компилятора или настроек сборки. В статье разбирается, как C++23 изменил время жизни временных объектов в таких циклах, почему поддержка стандарта зависит от компилятора и какие проверки помогут найти проблемные места в кодовой базе. Узнать детали