std::error_condition
Определён в заголовочном файле <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 равным 0 в generic_category (открытая функция-член) |
|
получает значение error_condition (открытая функция-член) |
|
получает error_category для этого error_condition (открытая функция-член) |
|
| получает поясняющую строку (открытая функция-член) |
|
| проверяет, не равно ли значение нулю (открытая функция-член) |
Функции, не являющиеся членами
|
(удалён в C++20)(удалён в C++20)(C++20) | сравнивает error_condition и error_code (функция) |
Вспомогательные классы
|
(C++11) | определяет перечисление как std::error_condition (шаблон класса) |
|
(C++17) | поддержка хеширования для 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'; // typically true
std::cout << (ec == std::errc::file_exists) << '\n'; // ditto
std::cout << (ec == make_error_code(std::errc::file_exists)) << '\n'; // false:
// different category
}
Возможный вывод:
true true false
См. также
|
(C++11) | хранит зависящий от платформы код ошибки (класс) |
|
(C++11) | базовый класс для категорий ошибок (класс) |
|
(C++11) | создаёт условие ошибки для значения errc типа e (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/error/error_condition