diff --git a/libcxx/docs/Status/Cxx2cIssues.csv b/libcxx/docs/Status/Cxx2cIssues.csv index 859c49af17ec9..41ca1f3426393 100644 --- a/libcxx/docs/Status/Cxx2cIssues.csv +++ b/libcxx/docs/Status/Cxx2cIssues.csv @@ -92,7 +92,7 @@ "`LWG4085 `__","``ranges::generate_random``'s helper lambda should specify the return type","2024-11 (Wrocław)","","","`#118347 `__","" "`LWG4088 `__","``println`` ignores the locale imbued in ``std::ostream``","2024-11 (Wrocław)","|Complete|","18","`#118348 `__","" "`LWG4112 `__","``has-arrow`` should required ``operator->()`` to be ``const``-qualified","2024-11 (Wrocław)","","","`#118349 `__","" -"`LWG4113 `__","Disallow ``has_unique_object_representations``","2024-11 (Wrocław)","|Complete|","","`#118350 `__","" +"`LWG4113 `__","Disallow ``has_unique_object_representations``","2024-11 (Wrocław)","|Complete|","6","`#118350 `__","" "`LWG4119 `__","``generator::promise_type::yield_value(ranges::elements_of)``'s nested ``generator`` may be ill-formed","2024-11 (Wrocław)","","","`#118351 `__","" "`LWG4124 `__","Cannot format ``zoned_time`` with resolution coarser than ``seconds``","2024-11 (Wrocław)","","","`#118352 `__","" "`LWG4126 `__","Some feature-test macros for fully freestanding features are not yet marked freestanding","2024-11 (Wrocław)","","","`#118353 `__","" diff --git a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/has_unique_object_representations.verify.cpp b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/has_unique_object_representations.verify.cpp new file mode 100644 index 0000000000000..8f00eb19a2bbe --- /dev/null +++ b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/has_unique_object_representations.verify.cpp @@ -0,0 +1,48 @@ +//===----------------------------------------------------------------------===// +// +// 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++17 + +// + +// has_unique_object_representations + +// Verify that has_unique_object_representations(_v) rejects incomplete class and enumeration types and arrays thereof. + +#include + +class IC; + +constexpr bool v1 = std::has_unique_object_representations::value; +constexpr bool v2 = std::has_unique_object_representations::value; +constexpr bool v3 = std::has_unique_object_representations::value; +constexpr bool v4 = std::has_unique_object_representations::value; + +constexpr bool v5 = std::has_unique_object_representations_v; +constexpr bool v6 = std::has_unique_object_representations_v; +constexpr bool v7 = std::has_unique_object_representations_v; +constexpr bool v8 = std::has_unique_object_representations_v; + +// expected-error@*:* 8 {{incomplete type 'IC' used in type trait expression}} + +enum E { + v9 = std::has_unique_object_representations::value, + v10 = std::has_unique_object_representations::value, + v11 = std::has_unique_object_representations::value, + v12 = std::has_unique_object_representations::value, + + v13 = std::has_unique_object_representations_v, + v14 = std::has_unique_object_representations_v, + v15 = std::has_unique_object_representations_v, + v16 = std::has_unique_object_representations_v, + +// TODO: Remove the guard once https://llvm.org/PR169472 is resolved. +#ifndef _MSC_VER // In Clang-cl mode, E is incorrectly considered complete here. +// expected-error@*:* 8 {{incomplete type 'E' used in type trait expression}} +#endif +};