65 typedef _Mutex mutex_type;
68 : _M_device(0), _M_owns(
false)
95 template<
typename _Clock,
typename _Duration>
100 _M_owns(_M_device->try_lock_until(__atime))
103 template<
typename _Rep,
typename _Period>
108 _M_owns(_M_device->try_lock_for(__rtime))
121 : _M_device(__u._M_device), _M_owns(__u._M_owns)
139 __throw_system_error(
int(errc::operation_not_permitted));
141 __throw_system_error(
int(errc::resource_deadlock_would_occur));
154 __throw_system_error(
int(errc::operation_not_permitted));
156 __throw_system_error(
int(errc::resource_deadlock_would_occur));
159 _M_owns = _M_device->try_lock();
164 template<
typename _Clock,
typename _Duration>
170 __throw_system_error(
int(errc::operation_not_permitted));
172 __throw_system_error(
int(errc::resource_deadlock_would_occur));
175 _M_owns = _M_device->try_lock_until(__atime);
180 template<
typename _Rep,
typename _Period>
186 __throw_system_error(
int(errc::operation_not_permitted));
188 __throw_system_error(
int(errc::resource_deadlock_would_occur));
191 _M_owns = _M_device->try_lock_for(__rtime);
200 __throw_system_error(
int(errc::operation_not_permitted));
211 std::swap(_M_device, __u._M_device);
212 std::swap(_M_owns, __u._M_owns);
218 mutex_type* __ret = _M_device;
226 owns_lock()
const noexcept
229 explicit operator bool()
const noexcept
230 {
return owns_lock(); }
234 mutex()
const noexcept
235 {
return _M_device; }
238 mutex_type* _M_device;