Reorder std::scoped_lock parameters as per P0739R0 DR status
* include/std/mutex (scoped_lock): Reorder std::adopt_lock_t parameter as per P0739R0. * testsuite/30_threads/scoped_lock/cons/1.cc: Reorder arguments. * testsuite/30_threads/scoped_lock/cons/deduction.cc: Test deduction with std::adopt_lock_t. * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Check feature-test macro. From-SVN: r250223
This commit is contained in:
parent
c2fc34620e
commit
e12d3780e6
5 changed files with 46 additions and 5 deletions
|
@ -1,3 +1,13 @@
|
|||
2017-07-15 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* include/std/mutex (scoped_lock): Reorder std::adopt_lock_t parameter
|
||||
as per P0739R0.
|
||||
* testsuite/30_threads/scoped_lock/cons/1.cc: Reorder arguments.
|
||||
* testsuite/30_threads/scoped_lock/cons/deduction.cc: Test deduction
|
||||
with std::adopt_lock_t.
|
||||
* testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Check
|
||||
feature-test macro.
|
||||
|
||||
2017-07-14 Jason Merrill <jason@redhat.com>
|
||||
Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
|
|
|
@ -557,7 +557,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
}
|
||||
|
||||
#if __cplusplus > 201402L
|
||||
#define __cpp_lib_scoped_lock 201703
|
||||
#define __cpp_lib_scoped_lock 201707
|
||||
/** @brief A scoped lock type for multiple lockable objects.
|
||||
*
|
||||
* A scoped_lock controls mutex ownership within a scope, releasing
|
||||
|
@ -570,7 +570,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
explicit scoped_lock(_MutexTypes&... __m) : _M_devices(std::tie(__m...))
|
||||
{ std::lock(__m...); }
|
||||
|
||||
explicit scoped_lock(_MutexTypes&... __m, adopt_lock_t) noexcept
|
||||
explicit scoped_lock(adopt_lock_t, _MutexTypes&... __m) noexcept
|
||||
: _M_devices(std::tie(__m...))
|
||||
{ } // calling thread owns mutex
|
||||
|
||||
|
@ -609,7 +609,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
explicit scoped_lock(mutex_type& __m) : _M_device(__m)
|
||||
{ _M_device.lock(); }
|
||||
|
||||
explicit scoped_lock(mutex_type& __m, adopt_lock_t) noexcept
|
||||
explicit scoped_lock(adopt_lock_t, mutex_type& __m) noexcept
|
||||
: _M_device(__m)
|
||||
{ } // calling thread owns mutex
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ void test01()
|
|||
|
||||
try
|
||||
{
|
||||
std::scoped_lock<BasicLockable> l(m, std::adopt_lock);
|
||||
std::scoped_lock<BasicLockable> l(std::adopt_lock, m);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
|
@ -113,7 +113,7 @@ void test02()
|
|||
|
||||
try
|
||||
{
|
||||
std::scoped_lock<Lockable<1>, Lockable<2>> l(m1, m2, std::adopt_lock);
|
||||
std::scoped_lock<Lockable<1>, Lockable<2>> l(std::adopt_lock, m1, m2);
|
||||
VERIFY( m1.m.locked );
|
||||
VERIFY( m2.m.locked );
|
||||
}
|
||||
|
|
|
@ -51,3 +51,28 @@ test01()
|
|||
std::scoped_lock l2(m2, m3);
|
||||
check_type<std::scoped_lock<Lockable, std::mutex>>(l2);
|
||||
}
|
||||
|
||||
void
|
||||
test02()
|
||||
{
|
||||
std::scoped_lock l0(std::adopt_lock);
|
||||
check_type<std::scoped_lock<>>(l0);
|
||||
|
||||
struct BasicLockable {
|
||||
void lock() { }
|
||||
void unlock() { }
|
||||
} m1;
|
||||
|
||||
std::scoped_lock l1(std::adopt_lock, m1);
|
||||
check_type<std::scoped_lock<BasicLockable>>(l1);
|
||||
|
||||
struct Lockable {
|
||||
void lock() { }
|
||||
void unlock() { }
|
||||
bool try_lock() { return true; }
|
||||
} m2;
|
||||
|
||||
std::mutex m3;
|
||||
std::scoped_lock l2(std::adopt_lock, m2, m3);
|
||||
check_type<std::scoped_lock<Lockable, std::mutex>>(l2);
|
||||
}
|
||||
|
|
|
@ -25,6 +25,12 @@
|
|||
|
||||
#include <mutex>
|
||||
|
||||
#ifndef __cpp_lib_scoped_lock
|
||||
# error "Feature-test macro for scoped_lock missing"
|
||||
#elif __cpp_lib_scoped_lock != 201707
|
||||
# error "Feature-test macro for scoped_lock has wrong value"
|
||||
#endif
|
||||
|
||||
void test01()
|
||||
{
|
||||
// Check for required typedefs
|
||||
|
|
Loading…
Add table
Reference in a new issue