Ответ 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.