Namespaces
Variants

std::error_condition

С ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования возможностей библиотеки (C++20)
Программные утилиты
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношения (устарело в C++20)
 
 
 
Определён в заголовочном файле<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
(функция)