std::contracts::contract_violation

来自cppreference.com
< cpp‎ | contract
 
 
 
契约支持
契约违背信息
contract_violation
(C++26)
辅助函数
 
在标头 <contracts> 定义
class contract_violation;
(C++26 起)

std::contracts::contract_violation 定义了用来表示在以特定的求值语义对契约断言进行求值时检测到的契约违背的对象的类型。

此类型的对象只能在需要调用契约断言处理函数时由实现创建。用户不能直接创建这些对象。

目录

[编辑] 成员函数

(构造函数)
[弃置]
用户无法构造 contract_violation 对象
(公开成员函数)
operator=
[弃置]
无法对 contract_violation 对象复制
(公开成员函数)
(析构函数)
[可能为虚]
析构 contract_violation 对象
(公开成员函数)
通用契约违背信息
kind
返回违背的异常契约的种类
(公开成员函数)
semantic
返回契约违背发生时的求值语义
(公开成员函数)
is_terminating
返回求值语义是否为终止语义
(公开成员函数)
detection_mode
返回导致异常违背发生的原因
(公开成员函数)
evaluation_exception
返回指向从谓词求值中抛出的异常的 std::exception_ptr
(公开成员函数)
其他契约违背信息
comment
返回关于契约违背的解释性字符串
(公开成员函数)
location
返回指示契约违背位置的 std::source_location
(公开成员函数)

std::contracts::contract_violation::contract_violation

contract_violation( const contract_violation& ) = delete;
(C++26 起)

复制构造函数被定义为弃置。std::contracts::contract_violation可复制构造 (CopyConstructible)

注解

其他构造函数仅供内部使用,用户无法访问。

std::contracts::contract_violation::operator=

contract_violation& operator=( const contract_violation& ) = delete;
(C++26 起)

复制赋值运算符被定义为弃置。std::contracts::contract_violation可复制赋值 (CopyAssignable)

std::contracts::contract_violation::~contract_violation

/* 见下文 */ ~contract_violation();
(C++26 起)

析构 contract_violation 对象。

注解

析构函数是否为虚由实现定义。

std::contracts::contract_violation::kind

std::contracts::assertion_kind kind() const noexcept;
(C++26 起)

返回值

返回与违背的契约断言的语法形式对应的枚举项的值。

std::contracts::contract_violation::semantic

std::contracts::evaluation_semantic semantic() const noexcept;
(C++26 起)

返回值

返回与对违背的契约断言求值时的求值语义对应的枚举项的值。

std::contracts::contract_violation::is_terminating

bool is_terminating() const noexcept;
(C++26 起)

返回值

如果求值语义是终止语义,那么就会返回 true。否则返回 false

std::contracts::contract_violation::detection_mode

std::contracts::detection_mode detection_mode() const noexcept;
(C++26 起)

返回值

返回与发生契约违背的原因对应的枚举项的值。

std::contracts::contract_violation::evaluation_exception

std::exception_ptr evaluation_exception() const noexcept;
(C++26 起)

返回值

如果契约违背因在对谓词求值的过程中抛出异常而发生,那么返回指代该异常或其副本的 std::exception_ptr 对象。否则返回空 std::exception_ptr 对象。

std::contracts::contract_violation::comment

const char* comment() const noexcept;
(C++26 起)

返回值

返回普通字面量编码下由实现定义的空终止多字节字符串

注解

C++ 标准建议返回的字符串应该包含违背的契约断言的谓词的文本表示,或在不希望存储文本表示的情况下返回空字符串。

std::contracts::contract_violation::location

std::source_location location() const noexcept;
(C++26 起)

返回值

返回其值由实现定义的 std::source_location 对象。

注解

C++ 标准建议返回的值应该是默认构造的 std::source_location 对象或以下指定的标识了违背的契约断言的值:

  • 只要有可能的情况下,如果违背的契约断言是前条件断言,那么应该返回函数调用的源位置。
  • 否则应该返回契约断言的源位置。