[libcxx] r197921 - Make cv_status a class enum. Fixes PR18314. Thanks to Andersca for the report and the patch.

Marshall Clow mclow.lists at gmail.com
Mon Dec 23 14:14:28 PST 2013


Author: marshall
Date: Mon Dec 23 16:14:27 2013
New Revision: 197921

URL: http://llvm.org/viewvc/llvm-project?rev=197921&view=rev
Log:
Make cv_status a class enum. Fixes PR18314. Thanks to Andersca for the report and the patch.

Modified:
    libcxx/trunk/include/__mutex_base
    libcxx/trunk/test/thread/thread.condition/cv_status.pass.cpp

Modified: libcxx/trunk/include/__mutex_base
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__mutex_base?rev=197921&r1=197920&r2=197921&view=diff
==============================================================================
--- libcxx/trunk/include/__mutex_base (original)
+++ libcxx/trunk/include/__mutex_base Mon Dec 23 16:14:27 2013
@@ -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
 {

Modified: libcxx/trunk/test/thread/thread.condition/cv_status.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/thread/thread.condition/cv_status.pass.cpp?rev=197921&r1=197920&r2=197921&view=diff
==============================================================================
--- libcxx/trunk/test/thread/thread.condition/cv_status.pass.cpp (original)
+++ libcxx/trunk/test/thread/thread.condition/cv_status.pass.cpp Mon Dec 23 16:14:27 2013
@@ -16,6 +16,6 @@
 
 int main()
 {
-    assert(std::cv_status::no_timeout == 0);
-    assert(std::cv_status::timeout == 1);
+    assert(static_cast<int>(std::cv_status::no_timeout) == 0);
+    assert(static_cast<int>(std::cv_status::timeout)    == 1);
 }





More information about the cfe-commits mailing list