Я бы хотел услышать различные мнения о том, как безопасно использовать c ++ в критически важных приложениях реального времени.
Точнее, возможно, возможно создать некоторую библиотеку макросов / шаблонов / классов для безопасного манипулирования данными (запечатывание для переполнений, zerodivides создает значения бесконечности или деление возможно только для специальных «ненулевых» типов данных), массивы с проверкой границ и циклы foreach, безопасные интеллектуальные указатели (например, похожий на boost shared_ptr) и даже безопасная многопоточность / распределенная модель (передача сообщений и упрощенные процессы, подобные тем, которые определены в языке Erlang).
Затем мы запрещаем некоторые опасные конструкции c / c ++, такие как необработанные указатели, некоторые необработанные типы, собственные операторы «new» и собственные массивы c / c ++ (конечно, для программиста приложения, а не для автора библиотеки). В идеале, мы должны создать специальный препроцессор / средство проверки, по крайней мере, у нас должна быть некоторая формальная процедура проверки, которая может быть применена к источникам, использующим какой-либо инструмент или руководство каким-либо человеком.
Итак, мои вопросы:
1) Существуют ли какие-либо библиотеки / проекты, в которых используется такая идея? (Встроенный с ++ явно не желаемого вида)?
2) Это хорошая идея или нет? Или это может быть полезно только для прототипирования какого-то другого гипотетического языка? Или это совершенно непригодно?
3) Любые другие мысли (или ссылки) по этому вопросу также приветствуются
Извините, если этот вопрос на самом деле не является вопросом, оффтопом, дубликатом и т. Д.,
но я не нашел более подходящего места, чтобы спросить его