diff --git a/libcxx/docs/Status/Cxx2cIssues.csv b/libcxx/docs/Status/Cxx2cIssues.csv index ef2da4df5d06c..d9fe499ac16cb 100644 --- a/libcxx/docs/Status/Cxx2cIssues.csv +++ b/libcxx/docs/Status/Cxx2cIssues.csv @@ -98,7 +98,7 @@ "`LWG4126 `__","Some feature-test macros for fully freestanding features are not yet marked freestanding","2024-11 (Wrocław)","","","" "`LWG4134 `__","Issue with Philox algorithm specification","2024-11 (Wrocław)","","","" "`LWG4135 `__","The helper lambda of ``std::erase`` for list should specify return type as ``bool``","2024-11 (Wrocław)","|Complete|","21","" -"`LWG4140 `__","Useless default constructors for bit reference types","2024-11 (Wrocław)","","","" +"`LWG4140 `__","Useless default constructors for bit reference types","2024-11 (Wrocław)","|Nothing To Do|","","" "`LWG4141 `__","Improve prohibitions on ""additional storage""","2024-11 (Wrocław)","","","" "`LWG4142 `__","``format_parse_context::check_dynamic_spec`` should require at least one type","2024-11 (Wrocław)","","","" "`LWG4144 `__","Disallow ``unique_ptr``","2024-11 (Wrocław)","","","" diff --git a/libcxx/test/std/containers/sequences/vector.bool/reference/ctor_no_default.compile.pass.cpp b/libcxx/test/std/containers/sequences/vector.bool/reference/ctor_no_default.compile.pass.cpp new file mode 100644 index 0000000000000..a55caf28c8706 --- /dev/null +++ b/libcxx/test/std/containers/sequences/vector.bool/reference/ctor_no_default.compile.pass.cpp @@ -0,0 +1,26 @@ +//===----------------------------------------------------------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +// + +#include +#include + +#include "test_allocator.h" +#include "test_macros.h" + +static_assert(!std::is_default_constructible::reference>::value, ""); +static_assert(!std::is_default_constructible >::reference>::value, ""); + +#if TEST_STD_VER >= 11 +void test_no_ambiguity_among_default_constructors(std::enable_if); +void test_no_ambiguity_among_default_constructors(std::vector::reference); +void test_no_ambiguity_among_default_constructors(std::vector>::reference); + +ASSERT_SAME_TYPE(decltype(test_no_ambiguity_among_default_constructors({})), void); +#endif diff --git a/libcxx/test/std/utilities/template.bitset/bitset.members/reference.ctor_no_default.compile.pass.cpp b/libcxx/test/std/utilities/template.bitset/bitset.members/reference.ctor_no_default.compile.pass.cpp new file mode 100644 index 0000000000000..68d6380c09b50 --- /dev/null +++ b/libcxx/test/std/utilities/template.bitset/bitset.members/reference.ctor_no_default.compile.pass.cpp @@ -0,0 +1,41 @@ +//===----------------------------------------------------------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +// + +#include +#include + +#include "test_macros.h" + +static_assert(!std::is_default_constructible::reference>::value, ""); +static_assert(!std::is_default_constructible::reference>::value, ""); +static_assert(!std::is_default_constructible::reference>::value, ""); +static_assert(!std::is_default_constructible::reference>::value, ""); +static_assert(!std::is_default_constructible::reference>::value, ""); +static_assert(!std::is_default_constructible::reference>::value, ""); +static_assert(!std::is_default_constructible::reference>::value, ""); +static_assert(!std::is_default_constructible::reference>::value, ""); +static_assert(!std::is_default_constructible::reference>::value, ""); +static_assert(!std::is_default_constructible::reference>::value, ""); + +#if TEST_STD_VER >= 11 +void test_no_ambiguity_among_default_constructors(std::enable_if); +void test_no_ambiguity_among_default_constructors(std::bitset<0>::reference); +void test_no_ambiguity_among_default_constructors(std::bitset<1>::reference); +void test_no_ambiguity_among_default_constructors(std::bitset<8>::reference); +void test_no_ambiguity_among_default_constructors(std::bitset<12>::reference); +void test_no_ambiguity_among_default_constructors(std::bitset<16>::reference); +void test_no_ambiguity_among_default_constructors(std::bitset<24>::reference); +void test_no_ambiguity_among_default_constructors(std::bitset<32>::reference); +void test_no_ambiguity_among_default_constructors(std::bitset<48>::reference); +void test_no_ambiguity_among_default_constructors(std::bitset<64>::reference); +void test_no_ambiguity_among_default_constructors(std::bitset<96>::reference); + +ASSERT_SAME_TYPE(decltype(test_no_ambiguity_among_default_constructors({})), void); +#endif