Author: marshall
Date: Sun Oct 25 15:12:16 2015
New Revision: 251257

URL: http://llvm.org/viewvc/llvm-project?rev=251257&view=rev
Log:
Fix LWG#2489: mem_fn() should be noexcept

Modified:
    libcxx/trunk/include/functional
    
libcxx/trunk/test/std/utilities/function.objects/func.memfn/member_function.pass.cpp
    libcxx/trunk/www/cxx1z_status.html

Modified: libcxx/trunk/include/functional
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/functional?rev=251257&r1=251256&r2=251257&view=diff
==============================================================================
--- libcxx/trunk/include/functional (original)
+++ libcxx/trunk/include/functional Sun Oct 25 15:12:16 2015
@@ -1249,7 +1249,7 @@ private:
     type __f_;
 
 public:
-    _LIBCPP_INLINE_VISIBILITY __mem_fn(type __f) : __f_(__f) {}
+    _LIBCPP_INLINE_VISIBILITY __mem_fn(type __f) _NOEXCEPT : __f_(__f) {}
 
 #ifndef _LIBCPP_HAS_NO_VARIADICS
     // invoke
@@ -1364,7 +1364,7 @@ public:
 template<class _Rp, class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 __mem_fn<_Rp _Tp::*>
-mem_fn(_Rp _Tp::* __pm)
+mem_fn(_Rp _Tp::* __pm) _NOEXCEPT
 {
     return __mem_fn<_Rp _Tp::*>(__pm);
 }

Modified: 
libcxx/trunk/test/std/utilities/function.objects/func.memfn/member_function.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/function.objects/func.memfn/member_function.pass.cpp?rev=251257&r1=251256&r2=251257&view=diff
==============================================================================
--- 
libcxx/trunk/test/std/utilities/function.objects/func.memfn/member_function.pass.cpp
 (original)
+++ 
libcxx/trunk/test/std/utilities/function.objects/func.memfn/member_function.pass.cpp
 Sun Oct 25 15:12:16 2015
@@ -69,4 +69,7 @@ int main()
     test0(std::mem_fn(&A::test0));
     test1(std::mem_fn(&A::test1));
     test2(std::mem_fn(&A::test2));
+#if __has_feature(cxx_noexcept)
+    static_assert((noexcept(std::mem_fn(&A::test0))), ""); // LWG#2489
+#endif
 }

Modified: libcxx/trunk/www/cxx1z_status.html
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/www/cxx1z_status.html?rev=251257&r1=251256&r2=251257&view=diff
==============================================================================
--- libcxx/trunk/www/cxx1z_status.html (original)
+++ libcxx/trunk/www/cxx1z_status.html Sun Oct 25 15:12:16 2015
@@ -175,14 +175,14 @@
        <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2466";>2466</a></td><td><tt>allocator_traits::max_size()</tt>
 default behavior is incorrect</td><td>Kona</td><td>Complete</td></tr>
        <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2469";>2469</a></td><td>Wrong
 specification of Requires clause of <tt>operator[]</tt> for <tt>map</tt> and 
<tt>unordered_map</tt></td><td>Kona</td><td></td></tr>
        <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2473";>2473</a></td><td><tt>basic_filebuf</tt>'s
 relation to C <tt>FILE</tt> semantics</td><td>Kona</td><td>Complete</td></tr>
-       <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2476";>2476</a></td><td><tt>scoped_allocator_adaptor</tt>
 is not assignable</td><td>Kona</td><td>Patch Ready</td></tr>
+       <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2476";>2476</a></td><td><tt>scoped_allocator_adaptor</tt>
 is not assignable</td><td>Kona</td><td>Complete</td></tr>
        <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2477";>2477</a></td><td>Inconsistency
 of wordings in <tt>std::vector::erase()</tt> and 
<tt>std::deque::erase()</tt></td><td>Kona</td><td>Complete</td></tr>
        <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2483";>2483</a></td><td><tt>throw_with_nested()</tt>
 should use <tt>is_final</tt></td><td>Kona</td><td>Complete</td></tr>
        <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2484";>2484</a></td><td><tt>rethrow_if_nested()</tt>
 is doubly unimplementable</td><td>Kona</td><td>Complete</td></tr>
        <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2485";>2485</a></td><td><tt>get()</tt>
 should be overloaded for <tt>const 
tuple&amp;&amp;</tt></td><td>Kona</td><td></td></tr>
        <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2486";>2486</a></td><td><tt>mem_fn()</tt>
 should be required to use perfect forwarding</td><td>Kona</td><td></td></tr>
        <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2487";>2487</a></td><td><tt>bind()</tt>
 should be <tt>const</tt>-overloaded, not 
<i>cv</i>-overloaded</td><td>Kona</td><td>Complete</td></tr>
-       <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2489";>2489</a></td><td><tt>mem_fn()</tt>
 should be <tt>noexcept</tt></td><td>Kona</td><td>Patch Ready</td></tr>
+       <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2489";>2489</a></td><td><tt>mem_fn()</tt>
 should be <tt>noexcept</tt></td><td>Kona</td><td>Complete</td></tr>
        <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2492";>2492</a></td><td>Clarify
 requirements for <tt>comp</tt></td><td>Kona</td><td>Complete</td></tr>
        <tr><td><a 
href="http://cplusplus.github.io/LWG/lwg-defects.html#2495";>2495</a></td><td>There
 is no such thing as an Exception Safety element</td><td>Kona</td><td></td></tr>
 


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to