C ++ 2a контрактное программирование и компиляторы

Я заинтересован в изучении недавно принятого контрактное программирование для C ++ 20 для целей обучения и исследования.

Поскольку я искал поддержку компилятора, я разочарован тем, что не нашел ее. И то и другое gcc а также clang совершенно ясно, что они не поддерживают эту функцию в их --std=c++2a Режим.

Поскольку одобрение получено довольно недавно, я не слишком удивлен тем, что современные компиляторы не поддерживают точную предложенную семантику. Что еще более удивительно для меня, так это то, что нет абсолютно ничего, даже расширения, специфичного для компилятора, которое имитировало бы, даже ограниченным образом, ту же функцию.

Я ожидал, что комитет C ++ рассмотрит только те функции, которые зарекомендовали себя на местах, как правило, с помощью конкретных расширений компилятора или цели. Утверждение этой функции для C ++ 20 предполагает, что эта функция должна быть доступна где-то. Но до сих пор я не смог его найти.

Есть ли способ поэкспериментировать с программированием контрактов на C ++ в настоящее время? даже используя набор расширений для конкретного компилятора?

4

Решение

Вы можете попробовать этот экспериментальная реализация контрактов в Clang.

4

Другие решения

Других решений пока нет …