В C++23 приняли P2718R0 — и старый баг range-for тихо исчез. Но не для всех временных объектов и не безусловно.
std::vector<int> getData() { return {1, 2, 3}; }
for (int x : getData() // временный 1
| filtered) // вью поверх него
std::cout << x;
✏️Задание (research): найди в документации/предложении ответы:
1️⃣ Жизнь каких именно временных объектов продлевает P2718R0?
2️⃣ Почему до C++23 пример выше был UB, а теперь — нет?
3️⃣ Остались ли случаи, где даже в C++23 ты получишь висячую ссылку?