Make cv_status a class enum. Fixes PR18314. Thanks to Andersca for the report and the patch.

llvm-svn: 197921
This commit is contained in:
Marshall Clow 2013-12-23 22:14:27 +00:00
parent 61d41af46b
commit ce81aed463
2 changed files with 7 additions and 13 deletions

View File

@ -254,19 +254,13 @@ void
swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) _NOEXCEPT swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) _NOEXCEPT
{__x.swap(__y);} {__x.swap(__y);}
struct _LIBCPP_TYPE_VIS cv_status //enum class cv_status
_LIBCPP_DECLARE_STRONG_ENUM(cv_status)
{ {
enum __lx { no_timeout,
no_timeout, timeout
timeout
};
__lx __v_;
_LIBCPP_INLINE_VISIBILITY cv_status(__lx __v) : __v_(__v) {}
_LIBCPP_INLINE_VISIBILITY operator int() const {return __v_;}
}; };
_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(cv_status)
class _LIBCPP_TYPE_VIS condition_variable class _LIBCPP_TYPE_VIS condition_variable
{ {

View File

@ -16,6 +16,6 @@
int main() int main()
{ {
assert(std::cv_status::no_timeout == 0); assert(static_cast<int>(std::cv_status::no_timeout) == 0);
assert(std::cv_status::timeout == 1); assert(static_cast<int>(std::cv_status::timeout) == 1);
} }