Re: [libcxx] r309296 - Implement P0739R0: 'Some improvements to class template argument deduction integration into the standard library' This is an API change (not ABI change) due to a late change in

2017-08-07 Thread Hans Wennborg via cfe-commits
On Thu, Jul 27, 2017 at 10:44 AM, Marshall Clow via cfe-commits
 wrote:
> Author: marshall
> Date: Thu Jul 27 10:44:03 2017
> New Revision: 309296
>
> URL: http://llvm.org/viewvc/llvm-project?rev=309296=rev
> Log:
> Implement P0739R0: 'Some improvements to class template argument deduction 
> integration into the standard library' This is an API change (not ABI change) 
> due to a late change in the c++17 standard
>
> Modified:
> libcxx/trunk/include/mutex
> 
> libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/adopt_lock.pass.cpp
> 
> libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp
> libcxx/trunk/www/cxx1z_status.html
> libcxx/trunk/www/cxx2a_status.html

Merged together with r309307 to 5.0 in r310286.
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[libcxx] r309296 - Implement P0739R0: 'Some improvements to class template argument deduction integration into the standard library' This is an API change (not ABI change) due to a late change in the

2017-07-27 Thread Marshall Clow via cfe-commits
Author: marshall
Date: Thu Jul 27 10:44:03 2017
New Revision: 309296

URL: http://llvm.org/viewvc/llvm-project?rev=309296=rev
Log:
Implement P0739R0: 'Some improvements to class template argument deduction 
integration into the standard library' This is an API change (not ABI change) 
due to a late change in the c++17 standard

Modified:
libcxx/trunk/include/mutex

libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/adopt_lock.pass.cpp

libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp
libcxx/trunk/www/cxx1z_status.html
libcxx/trunk/www/cxx2a_status.html

Modified: libcxx/trunk/include/mutex
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/mutex?rev=309296=309295=309296=diff
==
--- libcxx/trunk/include/mutex (original)
+++ libcxx/trunk/include/mutex Thu Jul 27 10:44:03 2017
@@ -116,7 +116,7 @@ public:
 using mutex_type = Mutex;  // If MutexTypes... consists of the single type 
Mutex
 
 explicit scoped_lock(MutexTypes&... m);
-scoped_lock(MutexTypes&... m, adopt_lock_t);
+scoped_lock(adopt_lock_t, MutexTypes&... m);
 ~scoped_lock();
 scoped_lock(scoped_lock const&) = delete;
 scoped_lock& operator=(scoped_lock const&) = delete;
@@ -500,7 +500,7 @@ public:
 ~scoped_lock() _LIBCPP_THREAD_SAFETY_ANNOTATION(release_capability()) 
{__m_.unlock();}
 
 _LIBCPP_INLINE_VISIBILITY
-explicit scoped_lock(mutex_type& __m, adopt_lock_t) 
_LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m))
+explicit scoped_lock(adopt_lock_t, mutex_type& __m) 
_LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m))
 : __m_(__m) {}
 
 scoped_lock(scoped_lock const&) = delete;
@@ -522,7 +522,7 @@ public:
 }
 
 _LIBCPP_INLINE_VISIBILITY
-scoped_lock(_MArgs&... __margs, adopt_lock_t)
+scoped_lock(adopt_lock_t, _MArgs&... __margs)
 : __t_(__margs...)
 {
 }

Modified: 
libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/adopt_lock.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/adopt_lock.pass.cpp?rev=309296=309295=309296=diff
==
--- 
libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/adopt_lock.pass.cpp
 (original)
+++ 
libcxx/trunk/test/std/thread/thread.mutex/thread.lock/thread.lock.scoped/adopt_lock.pass.cpp
 Thu Jul 27 10:44:03 2017
@@ -14,7 +14,7 @@
 
 // template  class scoped_lock;
 
-// scoped_lock(Mutex&..., adopt_lock_t);
+// scoped_lock(adopt_lock_t, Mutex&...);
 
 #include 
 #include 
@@ -43,7 +43,7 @@ int main()
 using LG = std::scoped_lock;
 m1.lock();
 {
-LG lg(m1, std::adopt_lock);
+LG lg(std::adopt_lock, m1);
 assert(m1.locked);
 }
 assert(!m1.locked);
@@ -53,7 +53,7 @@ int main()
 using LG = std::scoped_lock;
 m1.lock(); m2.lock();
 {
-LG lg(m1, m2, std::adopt_lock);
+LG lg(std::adopt_lock, m1, m2);
 assert(m1.locked && m2.locked);
 }
 assert(!m1.locked && !m2.locked);
@@ -63,7 +63,7 @@ int main()
 using LG = std::scoped_lock;
 m1.lock(); m2.lock(); m3.lock();
 {
-LG lg(m1, m2, m3, std::adopt_lock);
+LG lg(std::adopt_lock, m1, m2, m3);
 assert(m1.locked && m2.locked && m3.locked);
 }
 assert(!m1.locked && !m2.locked && !m3.locked);

Modified: 
libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp?rev=309296=309295=309296=diff
==
--- 
libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp
 (original)
+++ 
libcxx/trunk/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp
 Thu Jul 27 10:44:03 2017
@@ -261,4 +261,9 @@ int main() {
   test_copy_ctor_valueless_by_exception();
   test_copy_ctor_sfinae();
   test_constexpr_copy_ctor_extension();
+{ // This is the motivating example from P0739R0
+  std::variant v1(3);
+  std::variant v2 = v1;
+  (void) v2;
+}
 }

Modified: libcxx/trunk/www/cxx1z_status.html
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/www/cxx1z_status.html?rev=309296=309295=309296=diff
==
--- libcxx/trunk/www/cxx1z_status.html (original)
+++ libcxx/trunk/www/cxx1z_status.html Thu Jul 27 10:44:03 2017
@@ -39,6 +39,8 @@
   In February 2017, the C++ standard committee approved this draft, and 
sent it to ISO for approval as