Я не совсем понимаю, почему нам нужно сделать различие между кодом ошибки (std::error_code)
и ошибкой condition(std::error_condition)
, разве это не одно и то же? Каковы преимущества условия ошибки по сравнению с кодом ошибки?
Код ошибки против условия ошибки
Ответ 1
От http://en.cppreference.com/w/cpp/error/error_condition
std:: error_condition - независимый от платформы код ошибки. подобно std:: error_code, он однозначно идентифицируется целочисленным значением и std:: error_category, но в отличие от std:: error_code, значение не зависит от платформы.
Таким образом, преимущество заключается в том, что ваш код ошибки не определен для платформы, на которой вы работаете, при использовании std::error:condition
.
С std::error_code
Каждый объект std:: error_code содержит пару исходных кодов ошибок из операционной системы или какого-либо низкоуровневого интерфейса
Итак, error_code
будет ссылаться на что-то конкретное для вашей платформы, часть оборудования и т.д. и т.д.
Может быть выгодно использовать оба. error_condition
- это "портативная абстракция", поэтому было бы общим сообщением об ошибке, которое должно было бы дать пользователю, а error_code
- это зависимая от платформы информация, которая была бы полезна для конкретной отладки.
Типичная реализация [error_condition] содержит один целочисленный элемент данных (значение) и указатель на std:: error_category.
Ответ 2
Самый простой ответ на этот вопрос я нашел здесь: http://blog.think-async.com/2010/04/system-error-support-in-c0x-part-5.html.
class error_code - представляет собой конкретное значение ошибки, возвращаемое (например, системный вызов). class error_condition - что-то которые вы хотите протестировать и, возможно, реагировать на ваш код.
Я думаю, что он применим и для С++ 11.