From 239bc42b53daccb69d2195ae05e9c0964828375d Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Mon, 23 Dec 2013 22:14:27 +0000 Subject: [PATCH] Make cv_status a class enum. Fixes PR18314. Thanks to Andersca for the report and the patch. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@197921 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/__mutex_base | 16 +++++----------- test/thread/thread.condition/cv_status.pass.cpp | 4 ++-- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/include/__mutex_base b/include/__mutex_base index d4023a64f..abb1c1258 100644 --- a/include/__mutex_base +++ b/include/__mutex_base @@ -254,19 +254,13 @@ void swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) _NOEXCEPT {__x.swap(__y);} -struct _LIBCPP_TYPE_VIS cv_status +//enum class cv_status +_LIBCPP_DECLARE_STRONG_ENUM(cv_status) { - enum __lx { - no_timeout, - timeout - }; - - __lx __v_; - - _LIBCPP_INLINE_VISIBILITY cv_status(__lx __v) : __v_(__v) {} - _LIBCPP_INLINE_VISIBILITY operator int() const {return __v_;} - + no_timeout, + timeout }; +_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(cv_status) class _LIBCPP_TYPE_VIS condition_variable { diff --git a/test/thread/thread.condition/cv_status.pass.cpp b/test/thread/thread.condition/cv_status.pass.cpp index d89765765..d5e094766 100644 --- a/test/thread/thread.condition/cv_status.pass.cpp +++ b/test/thread/thread.condition/cv_status.pass.cpp @@ -16,6 +16,6 @@ int main() { - assert(std::cv_status::no_timeout == 0); - assert(std::cv_status::timeout == 1); + assert(static_cast(std::cv_status::no_timeout) == 0); + assert(static_cast(std::cv_status::timeout) == 1); }