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