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
(public member function)
заменяет содержимое
(public member function)
заменяет содержимое
(public member function)
устанавливает error_condition в значение 0 в generic_category
(public member function)
получает значение error_condition
(public member function)
получает error_category для данного error_condition
(public member function)
получает пояснительную строку
(public member function)
проверяет, является ли значение ненулевым
(public member function)

Функции, не являющиеся членами класса

(удалено в C++20) (удалено в C++20) (C++20)
сравнивает error_condition и error_code
(функция)

Вспомогательные классы

идентифицирует перечисление как std::error_condition
(шаблон класса)
поддержка хеширования для std::error_condition
(специализация шаблона класса)

Примечания

Сравнение между error_condition и std::error_code определяется их категориями ошибок. В частности, условие ошибки 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
(функция)