Update LWG 2767 and add test case

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@284324 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier
2016-10-16 03:45:06 +00:00
parent 46c0fcb2b3
commit fcdb3f77e8
2 changed files with 16 additions and 2 deletions

View File

@@ -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() int main()
{ {
constructor_tests(); constructor_tests();
@@ -589,4 +602,5 @@ int main()
call_operator_sfinae_test(); // somewhat of an extension call_operator_sfinae_test(); // somewhat of an extension
call_operator_forwarding_test(); call_operator_forwarding_test();
call_operator_noexcept_test(); call_operator_noexcept_test();
test_lwg2767();
} }

View File

@@ -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/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/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/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/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/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> <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>2759 - Patch and tests ready</li>
<li>2760 - This is just wording cleanup; no code or test changes needed.</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>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>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 <li>2769 - <i>std::any</i>: The PR looks good except that
<code>remove_reference_t&lt;remove_cv_t&lt;T&gt;&gt;</code> should read <code>remove_reference_t&lt;remove_cv_t&lt;T&gt;&gt;</code> should read