Текущий черновик C++ содержит в [ dcl.attr.contract.check ] p3:
Не должно быть никакого программного способа установки, изменения или запроса уровня сборки модуля перевода.
Я не понимаю, почему рекомендуется не разрешать запрашивать уровень контракта. С текущим макросом assert
возможно определить, используется ли assert через макрос NDEBUG
.
Запрос уровня контракта полезен в некоторых случаях, таких как:
- добавление дополнительных переменных для отслеживания дополнительного состояния.
- преобразование атомарного хранилища в атомарный сравнительный обмен для считывания значения.
Каково обоснование того, чтобы рекомендовать запрос уровня сборки невозможно?