std::contracts::contract_violation - cppreference.com (original) (raw)

| | | | | -------------------------- | | ------------- | | class contract_violation; | | (since C++26) |

The class std::contracts::contract_violation defines the type of objects used to represent a contract violation that has been detected during the evaluation of a contract assertion with a particular evaluation semantic.

Objects of this type can only be created by the implementation when the contract-violation handler needs to be invoked. Users cannot create such objects directly.

Contents

[edit] Member functions

(constructor)[deleted] contract_violation objects cannot be constructed by users (public member function)
operator=[deleted] contract_violation objects cannot be assigned (public member function)
(destructor)[possibly virtual] destructs the contract_violation object (public member function)
General contract-violation information
kind returns the kind of the contract assertion violated (public member function)
semantic returns the evaluation semantic when the contract violation occurs (public member function)
is_terminating returns whether the evaluation semantic is terminating (public member function)
detection_mode returns the reason that causes the contract violation (public member function)
evaluation_exception returns an std::exception_ptr to the exception thrown from the predicate evaulation (public member function)
Miscellaneous contract-violation information
comment returns the explanatory string about the contract violation (public member function)
location returns a std::source_location indicating the location of the contract violation (public member function)

std::contracts::contract_violation::contract_violation

| contract_violation( const contract_violation& ) = delete; | | (since C++26) | | ------------------------------------------------------------ | | ------------- |

The copy destructor is defined as deleted. std::contracts::contract_violation is not CopyConstructible.

Notes

Other constructors are for internal usage only, they are not user-accessible.

std::contracts::contract_violation::operator=

| contract_violation& operator=( const contract_violation& ) = delete; | | (since C++26) | | ------------------------------------------------------------------------ | | ------------- |

The copy assignment operator is defined as deleted. std::contracts::contract_violation is not CopyAssignable.

std::contracts::contract_violation::~contract_violation

| /* see below */ ~contract_violation(); | | (since C++26) | | ------------------------------------------ | | ------------- |

Destructs the contract_violation object.

Notes

It is implementation-defined whether the destructor is virtual.

std::contracts::contract_violation::kind

| std::contracts::assertion_kind kind() const noexcept; | | (since C++26) | | ------------------------------------------------------ | | ------------- |

Return value

Returns the enumerator value corresponding to the syntactic form of the violated contract assertion.

std::contracts::contract_violation::semantic

| std::contracts::evaluation_semantic semantic() const noexcept; | | (since C++26) | | --------------------------------------------------------------- | | ------------- |

Return value

Returns the enumerator value corresponding to the evaluation semantic with which the violated contract assertion was evaluated.

std::contracts::contract_violation::is_terminating

| bool is_terminating() const noexcept; | | (since C++26) | | -------------------------------------- | | ------------- |

Return value

If the evaluation semantic is a terminating semantic, returns true. Otherwise returns false.

std::contracts::contract_violation::detection_mode

| std::contracts::detection_mode detection_mode() const noexcept; | | (since C++26) | | ----------------------------------------------------------------- | | ------------- |

Return value

Returns the enumerator value corresponding to the reasons that cause the contract violation.

std::contracts::contract_violation::evaluation_exception

Return value

If the contract violation occurred because the evaluation of the predicate exited via an exception, returns an std::exception_ptr object that refers to that exception or a copy of that exception. Otherwise, returns a null std::exception_ptr object.

| const char* comment() const noexcept; | | (since C++26) | | -------------------------------------- | | ------------- |

Return value

Returns an implementation-defined null-terminated multibyte string in the ordinary literal encoding.

Notes

The C++ standard recommends that the string returned should contain a textual representation of the predicate of the violated contract assertion or an empty string if storing a textual representation is undesired.

std::contracts::contract_violation::location

Return value

Returns a std::source_location object with implementation-defined value.

Notes

The C++ standard recommends that the value returned should be a default constructed std::source_location object or a value identifying the violated contract assertion: