Опасность устарела, неопределенность недопустима: undefined behavior… — видео, канал «C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.» ▶ видео

Опасность устарела, неопределенность недопустима: 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
Просмотры: 6 787
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти