Я заинтересован в изучении недавно принятого контрактного программирования для C++20 для целей обучения и исследования.
Когда я ищу поддержку компилятора, я разочарован, что не нашел. Как gcc
, так и clang
совершенно ясно, что они не поддерживают эту функцию в своем режиме --std=c++2a
.
Поскольку одобрение было получено совсем недавно, я не слишком удивлен, что современные компиляторы не поддерживают точно предложенную семантику. Что меня больше всего удивляет, так это то, что нет абсолютно ничего, даже специфичного для компилятора расширения, которое могло бы имитировать, пусть и ограниченно, ту же функцию.
Я ожидал, что комитет C++ будет рассматривать только функции, которые зарекомендовали себя в полевых условиях, как правило, с помощью компилятора или целевых расширений. Одобрение этой функции для C++20 предполагает, что эта функция должна быть где-то доступна. Но пока найти не удалось.
Есть ли способ поэкспериментировать с контрактным программированием на С++ в настоящее время? даже используя набор расширений для компилятора?
CppCoreGuidelines
библиотеке поддержки здесь: github. com/Microsoft/GSL/blob/master/include/gsl/gsl_assert Я сделал похожие макросы и использую их так же, какassert
. Или вы можете просто использоватьassert
. - person Galik   schedule 11.12.2018