C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.
Прочее · 16 апреля 2026 г.
Опасность устарела, неопределенность недопустима: undefined behavior в С++20/23/26 — 16 апреля 2026 г. в 13:17:13.383
Опасность устарела, неопределенность недопустима: undefined behavior в С++20/23/26 Сергей Талантов В современных стандартах С++ стало меньше UB. Разбираем на конкретных кейсах. — Начиная с С++20 отрицательные целые числа обязательно должны быть представлены в дополнительном коде. Это сокращает количество UB в битовых операциях и не только. — Введение std::ssize, возвращающего знаковый размер контейнеров, уменьшает количество ошибок и UB в циклах. — Расширение времени жизни временных объектов в циклах for, появившееся в С++23, решает неочевидные проблемы. — Казалось бы, мелочь, но инициализация std::string нулевым указателем раньше была UB, a теперь запрещена. — В С++23 появился эксклюзивный режим открытия файла (O_EXCL), что решает проблему гонок (time-of-check to time-of-use). — Будет ли введена арифметика с насыщением в С++26? Некоторые конструкции языка признаются небезопасными и устаревшими, также проходимся по ним: — Осталось ли что-то от volatile? — Можно ли теперь делать неявный захват this по значению в лямбдах? — Какие операции с enum теперь не в почете. источник #cpp #programming 👉 @cpp_lib

