diff --git a/libcxx/docs/Status/Cxx2bPapers.csv b/libcxx/docs/Status/Cxx2bPapers.csv --- a/libcxx/docs/Status/Cxx2bPapers.csv +++ b/libcxx/docs/Status/Cxx2bPapers.csv @@ -31,7 +31,7 @@ "`P1272 `__","LWG","Byteswapping for fun&&nuf","October 2021","","" "`P1675 `__","LWG","``rethrow_exception`` must be allowed to copy","October 2021","","" "`P2077 `__","LWG","Heterogeneous erasure overloads for associative containers","October 2021","","" -"`P2251 `__","LWG","Require ``span`` & ``basic_string_view`` to be Trivially Copyable","October 2021","","" +"`P2251 `__","LWG","Require ``span`` & ``basic_string_view`` to be Trivially Copyable","October 2021","|Complete|","14.0" "`P2301 `__","LWG","Add a ``pmr`` alias for ``std::stacktrace``","October 2021","","" "`P2321 `__","LWG","``zip``","October 2021","","" "`P2340 `__","LWG","Clarifying the status of the 'C headers'","October 2021","","" diff --git a/libcxx/test/std/containers/views/trivially_copyable.compile.pass.cpp b/libcxx/test/std/containers/views/trivially_copyable.compile.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/views/trivially_copyable.compile.pass.cpp @@ -0,0 +1,19 @@ +// +// 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 +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03, c++11, c++14, c++17 + +// P2251 is supported by libc++ even in C++20 mode. +// UNSUPPORTED: !stdlib=libc++ && c++20 + +// + +#include +#include + +static_assert(std::is_trivially_copyable_v>); +static_assert(std::is_trivially_copyable_v>); diff --git a/libcxx/test/std/strings/string.view/trivially_copyable.compile.pass.cpp b/libcxx/test/std/strings/string.view/trivially_copyable.compile.pass.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/strings/string.view/trivially_copyable.compile.pass.cpp @@ -0,0 +1,24 @@ +//===----------------------------------------------------------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +// P2251 was voted into C++23, but libc++ guarantees triviality in all Standard modes, +// so we enable the test in all Standard modes for libc++. +// UNSUPPORTED: !stdlib=libc++ && (c++03 || c++11 || c++14 || c++17 || c++20) + +// + +#include +#include + +static_assert(std::is_trivially_copyable >::value, ""); +static_assert(std::is_trivially_copyable >::value, ""); +#ifndef _LIBCPP_HAS_NO_CHAR8_T +static_assert(std::is_trivially_copyable >::value, ""); +#endif +static_assert(std::is_trivially_copyable >::value, ""); +static_assert(std::is_trivially_copyable >::value, "");