// ensure the feature test macros are defined pre c++20 while we still support // -fcontracts independent of std version // { dg-do compile { target c++11 } } // { dg-additional-options "-fcontracts" } static_assert (__cpp_contracts >= 201906, "__cpp_contracts"); static_assert (__cpp_contracts_literal_semantics >= 201906, "__cpp_contracts_literal_semantics"); static_assert (__cpp_contracts_roles >= 201906, "__cpp_contracts_roles"); int main() { int x; [[assert: x >= 0]]; [[assert default: x < 0]]; [[assert audit: x == 0]]; [[assert axiom: x == 1]]; [[assert: x > 0 ? true : false]]; [[assert: x < 0 ? true : false]]; [[assert ignore: x >= 0]]; [[assert assume: x >= 0]]; [[assert check_never_continue: x >= 0]]; [[assert check_maybe_continue: x >= 0]]; [[assert %default: x >= 0]]; [[assert default %default: x < 0]]; [[assert audit %default: x == 0]]; [[assert axiom %default: x == 1]]; return 0; }