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