1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
namespace std {
class error_condition {
int value_;
std::error_category *cat_;
public:
error_condition()
: error_code(0, std::generic_category()) {}
error_condition(int e, const std::error_category& c)
: value_(e), cat_(&c) {}
template<class E> error_condition(E e)
{ *this = make_error_condition(e);}
template<class E> error_condition& operator=(E e)
{ *this = make_error_condition(e); }
void assign(int e, const std::error_category& c)
{ value_ = e; cat_ = &c; }
void clear()
{ *this = std::error_condition(); }
explicit operator bool() const
{ return value_ != 0; }
int value() const
{ return value_; }
const std::error_category& category() const
{ return cat_; }
std::string message() const
{ return cat_->message(value_); }
};
bool operator==(const error_condition& a, const error_condition &b)
{ return a.value() == b.value() && &a.category() == &b.category();}
|