Общая идея этой функции состоит в том, чтобы определить «безопасное» подмножество, а затем требуют отметки любого использования функций за пределами этого подмножества. Таким образом, небезопасным кодом можно лучше управлять и учитывать в более крупной базе кода или при оценке сторонних зависимостей.

(https://www.youtube.com/watch?v =6H-V-0oQvCA)
Были ли попытки внедрить эту функцию в стандарт ISO C++?
Единственное, что мне удалось найти это один из примеров самостоятельного решения с помощью clang-query (https://gist.github.com/htfy96/24b8d6ec ... 8595984315).
В статье Бьярна Страуструпа 2021 года Процветание в многолюдном и меняющемся мире: C++ 2006–2020 (https://dl.acm.org/doi/10.1145/3386320) нет никаких ссылок на реальные предложения по стандартизации. Поначалу обсуждение кажется недружелюбным по отношению к идее unsafe
Комитету неоднократно предлагалось улучшить безопасность типов, запретив
небезопасные функции (например, отказ от C-измов, таких как встроенные массивы и приведения). Однако попытки
удалить функции («объявить их устаревшими») неоднократно терпели неудачу, поскольку пользователи игнорировали предупреждения об
удалении и настаивали на том, чтобы их поставщики реализации продолжали их предоставлять.
также
С самых первых дней «C с классами» люди предлагали создавать безопасные подмножества
переключатели языка и компилятора обеспечивают такую безопасность. Однако эти предложения провалились по одной
из многих причин:
- Недостаточное количество людей смогли прийти к согласию относительно определения понятия «безопасный».
- Небезопасные функции (для каждого определения «небезопасного») — это те, которые необходимы для построения основных
безопасных абстракций. - Безопасного подмножества недостаточно. выразительно.
- Безопасное подмножество неэффективно.
Вторая причина подразумевает, что невозможно определить безопасный C++, просто запретив небезопасные функции.
Подход «совершенствование через ограничение» проектирование языков программирования в лучшем случае работает в очень
ограниченных ситуациях. Вам необходимо учитывать контекст и характер использования функций, которые в целом
небезопасны, но имеют безопасное использование. Более того, стандарт не может отказаться от обратной совместимости
(1.1), поэтому нам нужен другой подход.
Основной подход — это не простое ограничение, а то, что я назвал подходом «подмножество супермножества»
или ПРОДАТЬ [Stroustrup 2005]:
- Во-первых, дополните язык библиотечными возможностями, чтобы создать прочную основу для использования.
- Затем выполните подмножество, удалив небезопасные, подверженные ошибкам и чрезмерно дорогостоящие объекты.
Подробнее здесь: https://stackoverflow.com/questions/788 ... ns-namespa
Мобильная версия