diff --git a/libcxx/docs/Status/Cxx23Issues.csv b/libcxx/docs/Status/Cxx23Issues.csv index 1215f21985eb9..6471fdbf069a3 100644 --- a/libcxx/docs/Status/Cxx23Issues.csv +++ b/libcxx/docs/Status/Cxx23Issues.csv @@ -213,7 +213,7 @@ "`LWG3753 `__","Clarify entity vs. freestanding entity","2022-11 (Kona)","","","" "`LWG3754 `__","Class template expected synopsis contains declarations that do not match the detailed description","2022-11 (Kona)","|Nothing To Do|","","" "`LWG3755 `__","``tuple-for-each`` can call ``user-defined`` ``operator,``","2022-11 (Kona)","|Complete|","17","" -"`LWG3757 `__","What's the effect of ``std::forward_like(x)``?","2022-11 (Kona)","","","" +"`LWG3757 `__","What's the effect of ``std::forward_like(x)``?","2022-11 (Kona)","|Nothing To Do|","","" "`LWG3759 `__","``ranges::rotate_copy`` should use ``std::move``","2022-11 (Kona)","|Complete|","15","" "`LWG3760 `__","``cartesian_product_view::iterator``'s ``parent_`` is never valid","2022-11 (Kona)","","","" "`LWG3761 `__","``cartesian_product_view::iterator::operator-`` should pass by reference","2022-11 (Kona)","","","" diff --git a/libcxx/test/std/utilities/utility/forward/forward_like.verify.cpp b/libcxx/test/std/utilities/utility/forward/forward_like.verify.cpp new file mode 100644 index 0000000000000..279f0e60a1c38 --- /dev/null +++ b/libcxx/test/std/utilities/utility/forward/forward_like.verify.cpp @@ -0,0 +1,46 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// REQUIRES: std-at-least-c++23 + +// + +// template +// [[nodiscard]] constexpr +// auto forward_like(auto&& x) noexcept -> see below; + +// Mandates: T is a referenceable type (3.45 [defns.referenceable]). + +#include + +struct incomplete; + +void test() { + int i; + (void)std::forward_like(i); + + (void)std::forward_like(i); // expected-error {{no matching function for call to 'forward_like'}} + (void)std::forward_like(i); // expected-error {{no matching function for call to 'forward_like'}} + (void)std::forward_like(i); // expected-error {{no matching function for call to 'forward_like'}} + (void)std::forward_like(i); // expected-error {{no matching function for call to 'forward_like'}} + + using fp = void(); + using cfp = void() const; + using vfp = void() volatile; + using cvfp = void() const volatile; + (void)std::forward_like(i); + (void)std::forward_like(i); // expected-error {{no matching function for call to 'forward_like'}} + (void)std::forward_like(i); // expected-error {{no matching function for call to 'forward_like'}} + (void)std::forward_like(i); // expected-error {{no matching function for call to 'forward_like'}} + (void)std::forward_like(i); // expected-error {{no matching function for call to 'forward_like'}} + + using fpr = void()&; + using fprr = void()&&; + (void)std::forward_like(i); // expected-error {{no matching function for call to 'forward_like'}} + (void)std::forward_like(i); // expected-error {{no matching function for call to 'forward_like'}} +}