31 lines
1.5 KiB
Markdown
31 lines
1.5 KiB
Markdown
[contracts.syn]
|
||
|
||
# 17 Language support library [[support]](./#support)
|
||
|
||
## 17.10 Contract-violation handling [[support.contract]](support.contract#contracts.syn)
|
||
|
||
### 17.10.1 Header <contracts> synopsis [contracts.syn]
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/support.tex#L4387)
|
||
|
||
The header [<contracts>](#header:%3ccontracts%3e "17.10.1 Header <contracts> synopsis [contracts.syn]") defines types
|
||
for reporting information about contract violations ([[basic.contract.eval]](basic.contract.eval "6.11.2 Evaluation"))[.](#1.sentence-1)
|
||
|
||
[ð](#header:%3ccontracts%3e)
|
||
|
||
// all freestandingnamespace std::contracts {enum class assertion_kind : *unspecified* { pre = 1,
|
||
post = 2,
|
||
assert = 3}; enum class evaluation_semantic : *unspecified* { ignore = 1,
|
||
observe = 2,
|
||
enforce = 3,
|
||
quick_enforce = 4}; enum class detection_mode : *unspecified* { predicate_false = 1,
|
||
evaluation_exception = 2}; class contract_violation {// no user-accessible constructorpublic: contract_violation(const contract_violation&) = delete;
|
||
contract_violation& operator=(const contract_violation&) = delete; *see below* ~contract_violation(); const char* comment() const noexcept;
|
||
contracts::detection_mode detection_mode() const noexcept;
|
||
exception_ptr evaluation_exception() const noexcept; bool is_terminating() const noexcept;
|
||
assertion_kind kind() const noexcept;
|
||
source_location location() const noexcept;
|
||
evaluation_semantic semantic() const noexcept; }; void invoke_default_contract_violation_handler(const contract_violation&);}
|