1 #pragma once 2 #include <cstdint> 3 #include <system_error> 4 #include <type_traits> 5 6 namespace estd { 7 8 enum class unspecified_errc : int { 9 unspecified = -1, 10 }; 11 12 namespace detail { 13 inline class unspecified_error_category : public std::error_category { name() const14 char const * name() const noexcept override { return "unspecified"; } 15 message(int code) const16 std::string message(int code) const override { 17 (void) code; 18 return "unspecified error"; 19 } 20 } unspecified_error_category_; 21 } 22 unspecified_error_category()23inline std::error_category & unspecified_error_category() { 24 return detail::unspecified_error_category_; 25 } 26 make_error_code(unspecified_errc code)27inline std::error_code make_error_code(unspecified_errc code) { 28 return std::error_code{int(code), unspecified_error_category()}; 29 } 30 unspecified_error(int value)31inline std::error_code unspecified_error(int value) { 32 return std::error_code(value, unspecified_error_category()); 33 } 34 35 } 36 37 template<> class std::is_error_code_enum<estd::unspecified_errc> : public std::true_type{}; 38