17
Language support library
[support]
17.10
Contract-violation handling
[support.contract]
17.10.1
Header
<contracts>
synopsis
[contracts.syn]
1
#
The header
<contracts>
defines types for reporting information about contract violations (
[basic.
contract.
eval]
)
.
🔗
// all freestanding
namespace
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 constructor
public
:
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
&
)
;
}