diff --git a/src/cond.cpp b/src/cond.cpp index ba54d3045..bef7dcefc 100644 --- a/src/cond.cpp +++ b/src/cond.cpp @@ -64,7 +64,11 @@ equivalent( return ec == capy::error::not_found; case cond::timeout: - return ec == capy::error::timeout; + if(ec == capy::error::timeout) + return true; + if(ec == std::errc::timed_out) + return true; + return false; default: return false; diff --git a/test/unit/cond.cpp b/test/unit/cond.cpp index 1262939a3..e620dbca2 100644 --- a/test/unit/cond.cpp +++ b/test/unit/cond.cpp @@ -97,6 +97,18 @@ class cond_test BOOST_TEST(!(make_error_code(error::eof) == cond::stream_truncated)); BOOST_TEST(make_error_code(error::timeout) == cond::timeout); + // Equivalence: std::errc::timed_out == cond::timeout + { + auto ec = make_error_code(std::errc::timed_out); + BOOST_TEST(ec == cond::timeout); + BOOST_TEST(!(ec == cond::eof)); + } + { + std::error_code ec = std::make_error_code(std::errc::timed_out); + BOOST_TEST(ec == cond::timeout); + BOOST_TEST(!(ec == cond::canceled)); + } + // Out-of-range condition is equivalent to nothing. { auto ec = make_error_code(error::eof);