std::error_code in combination with std::system_category is equivalent to the::system::system_error. error_code::message should return the message. The only problem is that there seems to be no Unicode support wherefore we might want to keep system_message. Nevertheless, system_exception should be rewritten to use STL error codes.