std:: error_condition
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Non-member functions | ||||
|
(until C++20)
(until C++20)
(C++20)
|
||||
| Helper classes | ||||
|
Определено в заголовке
<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
(функция) |
Вспомогательные классы
|
(C++11)
|
идентифицирует перечисление как
std::error_condition
(шаблон класса) |
|
(C++17)
|
поддержка хеширования для
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)
|
содержит платформозависимый код ошибки
(класс) |
|
(C++11)
|
базовый класс для категорий ошибок
(класс) |
|
(C++11)
|
создает условие ошибки для значения
errc
e
(функция) |