В настоящее время я думаю о C++ в критическом для безопасности программном обеспечении (DO-178C DAL-D) и определениях стандарта кодирования. Я смотрел на MISRA C++, которому снова исполнилось 10 лет, и пропускает все функции C++ 11... 17.
Хотя консервативность в отношении безопасности часто является плохой идеей, новые особенности языка могут быть полезными для безопасности.
Во время обзоров нужно спорить о том, почему вы приняли определенные решения. И всегда можно утверждать, что новые возможности языка делают код более понятным... таким образом, меньше ошибок в недоразумениях; особенно если компилятор способен проверить и проверить ваши предположения.
Но трудно найти функции языка, которые несут аспекты безопасности более заметно, чем "сделать вещи более ясными". Какие аспекты современного C++ действительно помогают в безопасности?
Я создаю небольшой проект для тестирования этих идей и в настоящее время полностью сосредоточен на "дайте компилятору проверить ваши предположения". Например, мы только начали использовать [[nodiscard]]
и обнаружили, по крайней мере, две ошибки таким образом в течение первого часа. Но какие аспекты современного C++ были разработаны и должны использоваться с учетом безопасности?