Namespaces
Variants

std:: error_condition

From cppreference.net
Utilities library
定义于头文件 <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
(函数)

辅助类

标识枚举类型为 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)
保存平台相关的错误代码
(类)
错误类别的基类
(类)
errc 值创建错误条件 e
(函数)