C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.

@cpp_lib
Фото 🚀 Небольшие улучшения безопасности в ядре языка C++26 🔍 Что важно: язык C++ версии 26 получает сразу несколько «малых» - но значимых - изменений, направленных на повышение безопасности кода. 🔧 Основные нововведения: 1. Запрет связывания возвращённой ссылки с временным объектом Ранее можно было возвращать ссылку на временный объект, что приводило к висячим ссылкам и неявным ошибкам. Теперь это будет запрещено. 2. Изменение поведения при чтении неинициализированных значений В C++23 чтение неинициализированной переменной = неопределённое поведение. В C++26 такие случаи станут ошибками. - При этом для экспертных случаев остаётся атрибут [[indeterminate]], который позволяет отключать полную инициализацию, когда это оправдано. 3. Удаление указателя на неполный тип становится ill-formed Если тип неполон и у него не тривиальный деструктор или перегружен operator delete, то delete ptr; будет вызывать ошибку компиляции. 🎯 Важно: - Повышает общую надёжность и безопасность кода. - Улучшает диагностику ошибок на уровне языка, не только по статическому анализу. - Упрощает корректное использование памяти и типов. - Особенно актуально для больших и долгоживущих проектов на C++. 📌 Что делать: - Проверить свой код на случаи возврата ссылок на временные объекты. - Убедиться, что не читаются неинициализированные переменные - либо использовать [[indeterminate]] там, где это оправдано. - Проверить конструкции delete на указателях на неполные типы. - Следить за компиляторами и настройками: когда C++26-поддержка станет доступной, и начать адаптацию. https://www.modernescpp.com/index.php/small-safety-improvements-in-the-c-26-core-language/ #cpp #programming 👉 @cpp_lib
Если у вас установлено приложение,
вы можете сразу перейти в канал