std::error_condition
来自cppreference.com
在标头 <system_error> 定义
|
||
class error_condition; |
(C++11 起) | |
std::error_condition
持有用于指定错误条件的独立于平台的值。类似于 std::error_code,它由一个整数值和 std::error_category 所唯一标识,但不同于 std::error_code,该值不依赖平台。
典型的实现保有整数数据成员(其值)和一个指向 std::error_category 的指针。
成员函数
构造 error_condition (公开成员函数) | |
替换内容 (公开成员函数) | |
替换内容 (公开成员函数) | |
设置 error_condition 为 generic_category 中的值 0 (公开成员函数) | |
获得 error_condition 的值 (公开成员函数) | |
获得此 error_condition 的 error_category (公开成员函数) | |
获得解释性字符串 (公开成员函数) | |
检查值是否非零 (公开成员函数) |
非成员函数
(C++20 中移除)(C++20 中移除)(C++20) |
比较 error_condition 和 error_code (函数) |
辅助类
(C++11) |
鉴别枚举是否可作为 std::error_condition (类模板) |
std::error_condition 的散列支持 (类模板特化) |
注解
std::error_code 与 std::error_condition
之间的比较是由它们的错误类别定义的。特别是,std::generic_category 的某个错误条件,与某个特定类别(比如 std::system_category)的某个错误码,如果它们代表相同种类的错误,则可以比较相等。
std::errc 值可以通过向 std::error_condition
的隐式转换来进行与错误码的比较。
运行此代码
#include <cerrno> #include <iostream> #include <system_error> #include <Windows.h> int main() { std::error_code ec{ERROR_FILE_EXISTS, std::system_category()}; std::error_condition econd{EEXIST, std::generic_category()}; std::cout.setf(std::ios::boolalpha); std::cout << (ec == econd) << '\n'; // 通常为 true std::cout << (ec == std::errc::file_exists) << '\n'; // 同上 std::cout << (ec == make_error_code(std::errc::file_exists)) << '\n'; // false: // 不同类别 }
可能的输出:
true true false
参阅
(C++11) |
保有依赖于平台的错误码 (类) |
(C++11) |
错误类别的基类 (类) |
为 errc 值 e 创建错误条件 (函数) |