diff options
| -rw-r--r-- | libcxx/test/std/utilities/function.objects/func.not_fn/not_fn.pass.cpp | 14 | ||||
| -rw-r--r-- | libcxx/www/upcoming_meeting.html | 4 | 
2 files changed, 16 insertions, 2 deletions
diff --git a/libcxx/test/std/utilities/function.objects/func.not_fn/not_fn.pass.cpp b/libcxx/test/std/utilities/function.objects/func.not_fn/not_fn.pass.cpp index 0688b7b06f1..f104385f08b 100644 --- a/libcxx/test/std/utilities/function.objects/func.not_fn/not_fn.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/func.not_fn/not_fn.pass.cpp @@ -580,6 +580,19 @@ void call_operator_noexcept_test()      }  } +void test_lwg2767() { +    // See http://wg21.link/LWG2767 +    struct Abstract { virtual void f() const = 0; }; +    struct Derived : public Abstract { void f() const {} }; +    struct F { bool operator()(Abstract&&) { return false; } }; +    { +        Derived d; +        Abstract &a = d; +        bool b = std::not_fn(F{})(std::move(a)); +        assert(b); +    } +} +  int main()  {      constructor_tests(); @@ -589,4 +602,5 @@ int main()      call_operator_sfinae_test(); // somewhat of an extension      call_operator_forwarding_test();      call_operator_noexcept_test(); +    test_lwg2767();  } diff --git a/libcxx/www/upcoming_meeting.html b/libcxx/www/upcoming_meeting.html index 1fc56e8e4b0..30b04f9a13d 100644 --- a/libcxx/www/upcoming_meeting.html +++ b/libcxx/www/upcoming_meeting.html @@ -126,7 +126,7 @@  	 <tr><td><a href="http://wg21.link/LWG2759">2759</a></td><td>gcd / lcm and bool for the WP</td><td>Issaquah</td><td>Patch ready</td></tr>  	 <tr><td><a href="http://wg21.link/LWG2760">2760</a></td><td>non-const basic_string::data should not invalidate iterators</td><td>Issaquah</td><td>Nothing to do</td></tr>  	 <tr><td><a href="http://wg21.link/LWG2765">2765</a></td><td>Did LWG 1123 go too far?</td><td>Issaquah</td><td></td></tr> -	 <tr><td><a href="http://wg21.link/LWG2767">2767</a></td><td>not_fn call_wrapper can form invalid types</td><td>Issaquah</td><td></td></tr> +	 <tr><td><a href="http://wg21.link/LWG2767">2767</a></td><td>not_fn call_wrapper can form invalid types</td><td>Issaquah</td><td>We already do this</td></tr>  	 <tr><td><a href="http://wg21.link/LWG2768">2768</a></td><td>any_cast and move semantics</td><td>Issaquah</td><td>Resolved by LWG 2769</td></tr>       <tr><td><a href="http://wg21.link/LWG2769">2769</a></td><td>Redundant const in the return type of any_cast(const any&)</td><td>Issaquah</td><td>Implemented in trunk</td></tr>  	 <tr><td><a href="http://wg21.link/LWG2771">2771</a></td><td>Broken Effects of some basic_string::compare functions in terms of basic_string_view</td><td>Issaquah</td><td>We already do this</td></tr> @@ -204,7 +204,7 @@  <li>2759 - Patch and tests ready</li>  <li>2760 - This is just wording cleanup; no code or test changes needed.</li>  <li>2765 - is this just wording cleanup????? I don't think this actually requires code changes. </li> -<li>2767 - </li> +<li>2767 - The test case on the issue is incorrect. See not_fn.pass.cpp for the correct test case. </li>  <li>2768 - <i>std::any</i>: There is no PR for this issue. It is resolved by LWG 2769. </li>  <li>2769 - <i>std::any</i>: The PR looks good except that  	<code>remove_reference_t<remove_cv_t<T>></code> should read  | 

