[clang] [NFC] [Clang] Some core issues have changed status from tentatively ready -> ready / review (PR #97200)

Mital Ashok via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 23 17:28:49 PDT 2024


https://github.com/MitalAshok updated https://github.com/llvm/llvm-project/pull/97200

>From 0dea95701ca4dfca9b7d0bd889003fc35aa3017e Mon Sep 17 00:00:00 2001
From: Mital Ashok <mital at mitalashok.co.uk>
Date: Sun, 30 Jun 2024 10:39:15 +0100
Subject: [PATCH 01/12] [NFC] [Clang] Some core issues have changed status from
 tentatively ready -> ready / review

---
 clang/test/CXX/drs/cwg25xx.cpp |   2 +-
 clang/test/CXX/drs/cwg28xx.cpp |  16 ++--
 clang/www/cxx_dr_status.html   | 130 +++++++++++++++++++++++----------
 clang/www/make_cxx_dr_status   |   6 +-
 4 files changed, 104 insertions(+), 50 deletions(-)

diff --git a/clang/test/CXX/drs/cwg25xx.cpp b/clang/test/CXX/drs/cwg25xx.cpp
index 0934f0cc19c6a..5f8a058f8157a 100644
--- a/clang/test/CXX/drs/cwg25xx.cpp
+++ b/clang/test/CXX/drs/cwg25xx.cpp
@@ -139,7 +139,7 @@ struct D3 : B {
 #endif
 
 #if __cplusplus >= 202302L
-namespace cwg2561 { // cwg2561: no tentatively ready 2024-03-18
+namespace cwg2561 { // cwg2561: no ready 2024-03-18
 struct C {
     constexpr C(auto) { }
 };
diff --git a/clang/test/CXX/drs/cwg28xx.cpp b/clang/test/CXX/drs/cwg28xx.cpp
index c77bd433d8e21..524e67b52de51 100644
--- a/clang/test/CXX/drs/cwg28xx.cpp
+++ b/clang/test/CXX/drs/cwg28xx.cpp
@@ -30,7 +30,7 @@ using U2 = decltype(&main);
 #endif
 } // namespace cwg2811
 
-namespace cwg2819 { // cwg2819: 19 tentatively ready 2023-12-01
+namespace cwg2819 { // cwg2819: 19 ready 2023-12-01
 #if __cpp_constexpr >= 202306L
   constexpr void* p = nullptr;
   constexpr int* q = static_cast<int*>(p);
@@ -111,7 +111,7 @@ struct D : N::B {
 #endif
 } // namespace cwg2857
 
-namespace cwg2858 { // cwg2858: 19 tentatively ready 2024-04-05
+namespace cwg2858 { // cwg2858: 19 ready 2024-04-05
 
 #if __cplusplus > 202302L
 
@@ -134,7 +134,7 @@ struct A {
 
 } // namespace cwg2858
 
-namespace cwg2877 { // cwg2877: 19 tentatively ready 2024-05-31
+namespace cwg2877 { // cwg2877: 19 ready 2024-05-31
 #if __cplusplus >= 202002L
 enum E { x };
 void f() {
@@ -150,7 +150,7 @@ void g() {
 #endif
 } // namespace cwg2877
 
-namespace cwg2881 { // cwg2881: 19 tentatively ready 2024-04-19
+namespace cwg2881 { // cwg2881: 19 ready 2024-04-19
 
 #if __cplusplus >= 202302L
 
@@ -220,7 +220,7 @@ void f() {
 
 } // namespace cwg2881
 
-namespace cwg2882 { // cwg2882: 2.7 tentatively ready 2024-05-31
+namespace cwg2882 { // cwg2882: 2.7 ready 2024-05-31
 struct C {
   operator void() = delete;
   // expected-warning at -1 {{conversion function converting 'cwg2882::C' to 'void' will never be used}}
@@ -232,7 +232,7 @@ void f(C c) {
 }
 } // namespace cwg2882
 
-namespace cwg2883 { // cwg2883: no tentatively ready 2024-05-31
+namespace cwg2883 { // cwg2883: no ready 2024-05-31
 #if __cplusplus >= 201103L
 void f() {
   int x;
@@ -257,7 +257,7 @@ void g() {
 #endif
 } // namespace cwg2883
 
-namespace cwg2885 { // cwg2885: 16 tentatively ready 2024-05-31
+namespace cwg2885 { // cwg2885: 16 review 2024-05-31
 #if __cplusplus >= 202002L
 template <class T>
 struct A {
@@ -271,7 +271,7 @@ static_assert(!__is_trivially_constructible(B));
 #endif
 } // namespace cwg2885
 
-namespace cwg2886 { // cwg2886: 9 tentatively ready 2024-05-31
+namespace cwg2886 { // cwg2886: 9 ready 2024-05-31
 #if __cplusplus >= 201103L
 struct C {
   C() = default;
diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html
index 937f67981e296..64b361976a5a5 100755
--- a/clang/www/cxx_dr_status.html
+++ b/clang/www/cxx_dr_status.html
@@ -1442,7 +1442,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="233">
     <td><a href="https://cplusplus.github.io/CWG/issues/233.html">233</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>References vs pointers in UDC overload resolution</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -7329,11 +7329,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Overloading member function templates based on dependent return type</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
-  <tr class="open" id="1253">
+  <tr id="1253">
     <td><a href="https://cplusplus.github.io/CWG/issues/1253.html">1253</a></td>
-    <td>open</td>
+    <td>C++17</td>
     <td>Generic non-template members</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="1254">
     <td><a href="https://cplusplus.github.io/CWG/issues/1254.html">1254</a></td>
@@ -12677,7 +12677,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2144">
     <td><a href="https://cplusplus.github.io/CWG/issues/2144.html">2144</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Function/variable declaration ambiguity</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -15179,7 +15179,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2561">
     <td><a href="https://cplusplus.github.io/CWG/issues/2561.html">2561</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Conversion to function pointer for lambda with explicit object parameter</td>
     <td title="Clang does not implement 2024-03-18 resolution" align="center">Not Resolved*</td>
   </tr>
@@ -15341,7 +15341,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2588">
     <td><a href="https://cplusplus.github.io/CWG/issues/2588.html">2588</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>friend declarations and module linkage</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -15541,7 +15541,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2621.html">2621</a></td>
     <td>C++23</td>
     <td>Kind of lookup for <TT>using enum</TT> declarations</td>
-    <td title="Clang 19 implements 2024-05-31 resolution" align="center">Superseded by <a href="#2877">2877</a></td>
+    <td class="-superseded" align="center">Superseded by <a href="#2877">2877</a></td>
   </tr>
   <tr id="2622">
     <td><a href="https://cplusplus.github.io/CWG/issues/2622.html">2622</a></td>
@@ -16181,7 +16181,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2728">
     <td><a href="https://cplusplus.github.io/CWG/issues/2728.html">2728</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Evaluation of conversions in a <I>delete-expression</I></td>
     <td align="center">Not resolved</td>
   </tr>
@@ -16698,13 +16698,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2814">
     <td><a href="https://cplusplus.github.io/CWG/issues/2814.html">2814</a></td>
-    <td>tentatively ready</td>
+    <td>review</td>
     <td>Alignment requirement of incomplete class type</td>
     <td align="center">Not resolved</td>
   </tr>
   <tr class="open" id="2815">
     <td><a href="https://cplusplus.github.io/CWG/issues/2815.html">2815</a></td>
-    <td>open</td>
+    <td>drafting</td>
     <td>Overload resolution for references/pointers to <TT>noexcept</TT> functions</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -16722,13 +16722,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2818">
     <td><a href="https://cplusplus.github.io/CWG/issues/2818.html">2818</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Use of predefined reserved identifiers</td>
     <td align="center">Not resolved</td>
   </tr>
   <tr class="open" id="2819">
     <td><a href="https://cplusplus.github.io/CWG/issues/2819.html">2819</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Cast from null pointer value in a constant expression</td>
     <td title="Clang 19 implements 2023-12-01 resolution" align="center">Not Resolved*</td>
   </tr>
@@ -16830,7 +16830,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2836">
     <td><a href="https://cplusplus.github.io/CWG/issues/2836.html">2836</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Conversion rank of <TT>long double</TT> and extended floating-point types</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -16962,13 +16962,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2858">
     <td><a href="https://cplusplus.github.io/CWG/issues/2858.html">2858</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Declarative <I>nested-name-specifier</I>s and <I>pack-index-specifier</I>s</td>
     <td title="Clang 19 implements 2024-04-05 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr class="open" id="2859">
     <td><a href="https://cplusplus.github.io/CWG/issues/2859.html">2859</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Value-initialization with multiple default constructors</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -16980,13 +16980,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2861">
     <td><a href="https://cplusplus.github.io/CWG/issues/2861.html">2861</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td><TT>dynamic_cast</TT> on bad pointer value</td>
     <td align="center">Not resolved</td>
   </tr>
   <tr class="open" id="2862">
     <td><a href="https://cplusplus.github.io/CWG/issues/2862.html">2862</a></td>
-    <td>tentatively ready</td>
+    <td>drafting</td>
     <td>Unclear boundaries of template declarations</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -16998,13 +16998,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2864">
     <td><a href="https://cplusplus.github.io/CWG/issues/2864.html">2864</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Narrowing floating-point conversions</td>
     <td align="center">Not resolved</td>
   </tr>
   <tr class="open" id="2865">
     <td><a href="https://cplusplus.github.io/CWG/issues/2865.html">2865</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Regression on result of conditional operator</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -17016,7 +17016,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2867">
     <td><a href="https://cplusplus.github.io/CWG/issues/2867.html">2867</a></td>
-    <td>review</td>
+    <td>ready</td>
     <td>Order of initialization for structured bindings</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -17028,25 +17028,25 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2869">
     <td><a href="https://cplusplus.github.io/CWG/issues/2869.html">2869</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td><TT>this</TT> in local classes</td>
     <td align="center">Not resolved</td>
   </tr>
   <tr class="open" id="2870">
     <td><a href="https://cplusplus.github.io/CWG/issues/2870.html">2870</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Combining absent <I>encoding-prefix</I>es</td>
     <td align="center">Not resolved</td>
   </tr>
   <tr class="open" id="2871">
     <td><a href="https://cplusplus.github.io/CWG/issues/2871.html">2871</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>User-declared constructor templates inhibiting default constructors</td>
     <td align="center">Not resolved</td>
   </tr>
   <tr class="open" id="2872">
     <td><a href="https://cplusplus.github.io/CWG/issues/2872.html">2872</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Linkage and unclear "can be referred to"</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -17058,25 +17058,25 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2874">
     <td><a href="https://cplusplus.github.io/CWG/issues/2874.html">2874</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Qualified declarations of partial specializations</td>
     <td align="center">Not resolved</td>
   </tr>
   <tr class="open" id="2875">
     <td><a href="https://cplusplus.github.io/CWG/issues/2875.html">2875</a></td>
-    <td>tentatively ready</td>
+    <td>review</td>
     <td>Missing support for round-tripping null pointer values through indirection/address operators</td>
     <td align="center">Not resolved</td>
   </tr>
   <tr class="open" id="2876">
     <td><a href="https://cplusplus.github.io/CWG/issues/2876.html">2876</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Disambiguation of <TT>T x = delete("text")</TT></td>
     <td align="center">Not resolved</td>
   </tr>
   <tr class="open" id="2877">
     <td><a href="https://cplusplus.github.io/CWG/issues/2877.html">2877</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Type-only lookup for <I>using-enum-declarator</I></td>
     <td title="Clang 19 implements 2024-05-31 resolution" align="center">Not Resolved*</td>
   </tr>
@@ -17100,19 +17100,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2881">
     <td><a href="https://cplusplus.github.io/CWG/issues/2881.html">2881</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Type restrictions for the explicit object parameter of a lambda</td>
     <td title="Clang 19 implements 2024-04-19 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr class="open" id="2882">
     <td><a href="https://cplusplus.github.io/CWG/issues/2882.html">2882</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Unclear treatment of conversion to <TT>void</TT></td>
     <td title="Clang 2.7 implements 2024-05-31 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr class="open" id="2883">
     <td><a href="https://cplusplus.github.io/CWG/issues/2883.html">2883</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Definition of "odr-usable" ignores lambda scopes</td>
     <td title="Clang does not implement 2024-05-31 resolution" align="center">Not Resolved*</td>
   </tr>
@@ -17124,19 +17124,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2885">
     <td><a href="https://cplusplus.github.io/CWG/issues/2885.html">2885</a></td>
-    <td>tentatively ready</td>
+    <td>review</td>
     <td>Non-eligible trivial default constructors</td>
     <td title="Clang 16 implements 2024-05-31 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr class="open" id="2886">
     <td><a href="https://cplusplus.github.io/CWG/issues/2886.html">2886</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Temporaries and trivial potentially-throwing special member functions</td>
     <td title="Clang 9 implements 2024-05-31 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr class="open" id="2887">
     <td><a href="https://cplusplus.github.io/CWG/issues/2887.html">2887</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Missing compatibility entries for xvalues</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -17160,13 +17160,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2891">
     <td><a href="https://cplusplus.github.io/CWG/issues/2891.html">2891</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Normative status of implementation limits</td>
     <td align="center">Not resolved</td>
   </tr>
   <tr class="open" id="2892">
     <td><a href="https://cplusplus.github.io/CWG/issues/2892.html">2892</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Unclear usual arithmetic conversions</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -17184,7 +17184,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2895">
     <td><a href="https://cplusplus.github.io/CWG/issues/2895.html">2895</a></td>
-    <td>tentatively ready</td>
+    <td>ready</td>
     <td>Initialization should ignore the destination type's cv-qualification</td>
     <td align="center">Not resolved</td>
   </tr>
@@ -17235,6 +17235,60 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>tentatively ready</td>
     <td>Can we omit the <TT>template</TT> disambiguator in <I>nested-name-specifier</I>s in type-only contexts?</td>
     <td align="center">Not resolved</td>
+  </tr>
+  <tr class="open" id="2904">
+    <td><a href="https://cplusplus.github.io/CWG/issues/2904.html">2904</a></td>
+    <td>open</td>
+    <td>Introducing <I>template-name</I>s</td>
+    <td align="center">Not resolved</td>
+  </tr>
+  <tr class="open" id="2905">
+    <td><a href="https://cplusplus.github.io/CWG/issues/2905.html">2905</a></td>
+    <td>tentatively ready</td>
+    <td>Value-dependence of <I>noexcept-expression</I></td>
+    <td align="center">Not resolved</td>
+  </tr>
+  <tr class="open" id="2906">
+    <td><a href="https://cplusplus.github.io/CWG/issues/2906.html">2906</a></td>
+    <td>tentatively ready</td>
+    <td>Lvalue-to-rvalue conversion of class types for conditional operator</td>
+    <td align="center">Not resolved</td>
+  </tr>
+  <tr class="open" id="2907">
+    <td><a href="https://cplusplus.github.io/CWG/issues/2907.html">2907</a></td>
+    <td>open</td>
+    <td>Constant lvalue-to-rvalue conversion on uninitialized <TT>std::nullptr_t</TT></td>
+    <td align="center">Not resolved</td>
+  </tr>
+  <tr class="open" id="2908">
+    <td><a href="https://cplusplus.github.io/CWG/issues/2908.html">2908</a></td>
+    <td>open</td>
+    <td>Counting physical source lines for <TT>__LINE__</TT></td>
+    <td align="center">Not resolved</td>
+  </tr>
+  <tr class="open" id="2909">
+    <td><a href="https://cplusplus.github.io/CWG/issues/2909.html">2909</a></td>
+    <td>open</td>
+    <td>Subtle difference between constant-initialized and constexpr</td>
+    <td align="center">Not resolved</td>
+  </tr>
+  <tr class="open" id="2910">
+    <td><a href="https://cplusplus.github.io/CWG/issues/2910.html">2910</a></td>
+    <td>open</td>
+    <td>Effect of <I>requirement-parameter-list</I>s on odr-usability</td>
+    <td align="center">Not resolved</td>
+  </tr>
+  <tr class="open" id="2911">
+    <td><a href="https://cplusplus.github.io/CWG/issues/2911.html">2911</a></td>
+    <td>open</td>
+    <td>Unclear meaning of expressions "appearing within" subexpressions</td>
+    <td align="center">Not resolved</td>
+  </tr>
+  <tr class="open" id="2912">
+    <td><a href="https://cplusplus.github.io/CWG/issues/2912.html">2912</a></td>
+    <td>open</td>
+    <td>Too-large value for size in array new</td>
+    <td align="center">Not resolved</td>
   </tr></table>
 
 </div>
diff --git a/clang/www/make_cxx_dr_status b/clang/www/make_cxx_dr_status
index 1d337fc4e5f87..fe267a6ddbfb2 100755
--- a/clang/www/make_cxx_dr_status
+++ b/clang/www/make_cxx_dr_status
@@ -145,10 +145,10 @@ def availability(issue):
 
   unresolved_status = ''
   proposed_resolution = ''
-  unresolved_status_match = re.search(r' (open|drafting|review|tentatively ready)', status)
+  unresolved_status_match = re.search(r' (open|drafting|review|tentatively ready|ready)', status)
   if unresolved_status_match:
     unresolved_status = unresolved_status_match.group(1)
-    proposed_resolution_match = re.search(r' (open|drafting|review|tentatively ready) (\d{4}-\d{2}(?:-\d{2})?|P\d{4}R\d+)$', status)
+    proposed_resolution_match = re.search(r' (open|drafting|review|tentatively ready|ready) (\d{4}-\d{2}(?:-\d{2})?|P\d{4}R\d+)$', status)
     if proposed_resolution_match is None:
       raise AvailabilityError('Issue {}: \'{}\' status should be followed by a paper number (P1234R5) or proposed resolution in YYYY-MM-DD format'.format(dr.issue, unresolved_status))
     proposed_resolution = proposed_resolution_match.group(2)
@@ -246,7 +246,7 @@ for dr in drs:
     avail = 'Extension'
     avail_style = ''
 
-  elif dr.status in ('open', 'drafting', 'review', 'tentatively ready'):
+  elif dr.status in ('open', 'drafting', 'review', 'tentatively ready', 'ready'):
     row_style = ' class="open"'
     try:
       avail, avail_style, unresolved_status, tooltip = availability(dr.issue)

>From 842784c7ff4122a876de9a684415e23dc9ddcbfd Mon Sep 17 00:00:00 2001
From: Mital Ashok <mital at mitalashok.co.uk>
Date: Sun, 30 Jun 2024 13:34:30 +0100
Subject: [PATCH 02/12] CWG2561: Update date

No wording changed when the status changed from tentatively ready -> ready

https://github.com/cplusplus/CWG/commit/88301b7cd100740f5aa131c405753928a071f41e#diff-7f6b9e6fa45271f479d29c851c4a8b0904f563aadff7a477b53f977113816fa1
---
 clang/test/CXX/drs/cwg25xx.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/test/CXX/drs/cwg25xx.cpp b/clang/test/CXX/drs/cwg25xx.cpp
index 5f8a058f8157a..6280f9c0ad36f 100644
--- a/clang/test/CXX/drs/cwg25xx.cpp
+++ b/clang/test/CXX/drs/cwg25xx.cpp
@@ -139,7 +139,7 @@ struct D3 : B {
 #endif
 
 #if __cplusplus >= 202302L
-namespace cwg2561 { // cwg2561: no ready 2024-03-18
+namespace cwg2561 { // cwg2561: no ready 2024-06-25
 struct C {
     constexpr C(auto) { }
 };

>From 7ab27a04ce8ff109e732de943ec6d28064e81882 Mon Sep 17 00:00:00 2001
From: Mital Ashok <mital at mitalashok.co.uk>
Date: Sun, 30 Jun 2024 13:37:10 +0100
Subject: [PATCH 03/12] CWG2819: Update date

No wording changed when the status changed from tentatively ready -> ready

https://github.com/cplusplus/CWG/commit/7d046fa9a210d8a957602dfb37405b8e083e3c66#diff-e987bc686b50066d0b5e3a9550c2d159f8e2468f1b0c678886ae0b477020740f
---
 clang/test/CXX/drs/cwg28xx.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/test/CXX/drs/cwg28xx.cpp b/clang/test/CXX/drs/cwg28xx.cpp
index 524e67b52de51..bd6f48eb6c3d0 100644
--- a/clang/test/CXX/drs/cwg28xx.cpp
+++ b/clang/test/CXX/drs/cwg28xx.cpp
@@ -30,7 +30,7 @@ using U2 = decltype(&main);
 #endif
 } // namespace cwg2811
 
-namespace cwg2819 { // cwg2819: 19 ready 2023-12-01
+namespace cwg2819 { // cwg2819: 19 ready 2024-06-26
 #if __cpp_constexpr >= 202306L
   constexpr void* p = nullptr;
   constexpr int* q = static_cast<int*>(p);

>From 094a538c604f1013e0480e53159dfc5952777e7a Mon Sep 17 00:00:00 2001
From: Mital Ashok <mital at mitalashok.co.uk>
Date: Sun, 30 Jun 2024 13:40:46 +0100
Subject: [PATCH 04/12] CWG2882/2883/2886: Update date

No wording changed when the status changed from tentatively ready -> ready

https://github.com/cplusplus/CWG/commit/4fb18cf3b813f9318b57e769d075a2fb9be3575e#diff-68b7577cc815e0ac6fc6d9b6dc964ef521088944b2bf3c0b9492c81241deeb09
---
 clang/test/CXX/drs/cwg28xx.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/clang/test/CXX/drs/cwg28xx.cpp b/clang/test/CXX/drs/cwg28xx.cpp
index bd6f48eb6c3d0..86fed5a57c861 100644
--- a/clang/test/CXX/drs/cwg28xx.cpp
+++ b/clang/test/CXX/drs/cwg28xx.cpp
@@ -220,7 +220,7 @@ void f() {
 
 } // namespace cwg2881
 
-namespace cwg2882 { // cwg2882: 2.7 ready 2024-05-31
+namespace cwg2882 { // cwg2882: 2.7 ready 2024-06-27
 struct C {
   operator void() = delete;
   // expected-warning at -1 {{conversion function converting 'cwg2882::C' to 'void' will never be used}}
@@ -232,7 +232,7 @@ void f(C c) {
 }
 } // namespace cwg2882
 
-namespace cwg2883 { // cwg2883: no ready 2024-05-31
+namespace cwg2883 { // cwg2883: no ready 2024-06-27
 #if __cplusplus >= 201103L
 void f() {
   int x;
@@ -271,7 +271,7 @@ static_assert(!__is_trivially_constructible(B));
 #endif
 } // namespace cwg2885
 
-namespace cwg2886 { // cwg2886: 9 ready 2024-05-31
+namespace cwg2886 { // cwg2886: 9 ready 2024-06-27
 #if __cplusplus >= 201103L
 struct C {
   C() = default;

>From 2d2178d98ef87f3baf838e064cba5f23049073bf Mon Sep 17 00:00:00 2001
From: Mital Ashok <mital at mitalashok.co.uk>
Date: Sun, 30 Jun 2024 13:43:12 +0100
Subject: [PATCH 05/12] CWG2885: Update date

No wording changed when the status changed from tentatively ready -> review

https://github.com/cplusplus/CWG/commit/858b5e8c1041202d8a1dc6dbd7261810df7bfc79#diff-e0e6ed8a272741d6e662722daaef5dc2682c113d6ef698b3228c3b01dfa30a93
---
 clang/test/CXX/drs/cwg28xx.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/test/CXX/drs/cwg28xx.cpp b/clang/test/CXX/drs/cwg28xx.cpp
index 86fed5a57c861..7426cea5cbe91 100644
--- a/clang/test/CXX/drs/cwg28xx.cpp
+++ b/clang/test/CXX/drs/cwg28xx.cpp
@@ -257,7 +257,7 @@ void g() {
 #endif
 } // namespace cwg2883
 
-namespace cwg2885 { // cwg2885: 16 review 2024-05-31
+namespace cwg2885 { // cwg2885: 16 review 2024-06-28
 #if __cplusplus >= 202002L
 template <class T>
 struct A {

>From c1e101ff429e34395037654b26296c657ae65fe8 Mon Sep 17 00:00:00 2001
From: Mital Ashok <mital at mitalashok.co.uk>
Date: Sun, 30 Jun 2024 13:23:51 +0100
Subject: [PATCH 06/12] CWG2881: Update date for new wording

A new example was also added and Clang rejects it as expected

https://github.com/cplusplus/CWG/commit/d7a3a3d302336cd467ac09867b8a19105c34346c

The wording change is:

2024-05-17:
 - Attempting to give a type not permitted for an explicit
   object parameter of a lambda's function call operator
   (7.5.5.2 expr.prim.lambda.closure)

2024-06-26:
 - Attempting to give to an explicit object parameter of
   a lambda's function call operator a type not peremitted for such
   (7.5.5.2 expr.prim.lambda.closure)
---
 clang/test/CXX/drs/cwg28xx.cpp | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/clang/test/CXX/drs/cwg28xx.cpp b/clang/test/CXX/drs/cwg28xx.cpp
index 7426cea5cbe91..f31edf06d7928 100644
--- a/clang/test/CXX/drs/cwg28xx.cpp
+++ b/clang/test/CXX/drs/cwg28xx.cpp
@@ -150,7 +150,7 @@ void g() {
 #endif
 } // namespace cwg2877
 
-namespace cwg2881 { // cwg2881: 19 ready 2024-04-19
+namespace cwg2881 { // cwg2881: 19 ready 2024-06-26
 
 #if __cplusplus >= 202302L
 
@@ -216,6 +216,18 @@ void f() {
   o.decltype(L2)::operator()();
 }
 
+int main() {
+  int x = 0;
+  auto lambda = [x] (this auto self) { return x; };
+  using Lambda = decltype(lambda);
+  struct D : private Lambda { // expected-note {{declared private here}}
+    D(Lambda l) : Lambda(l) {}
+    using Lambda::operator();
+    friend Lambda;
+  } d(lambda);
+  d(); // expected-error {{invalid explicit object parameter type 'D' in lambda with capture; the type must derive publicly from the lambda}}
+}
+
 #endif
 
 } // namespace cwg2881

>From f5327be184045703388f46996a70b79230f407b7 Mon Sep 17 00:00:00 2001
From: Mital Ashok <mital at mitalashok.co.uk>
Date: Sun, 30 Jun 2024 13:22:19 +0100
Subject: [PATCH 07/12] CWG2877: Update date, update comments in example

Only the comments in the example code were changed so there should be no functional difference

https://github.com/cplusplus/CWG/commit/b7022853d731983a4b15d0a3a5b4ca49dc1ff366
---
 clang/test/CXX/drs/cwg28xx.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/clang/test/CXX/drs/cwg28xx.cpp b/clang/test/CXX/drs/cwg28xx.cpp
index f31edf06d7928..a2e689fbba74a 100644
--- a/clang/test/CXX/drs/cwg28xx.cpp
+++ b/clang/test/CXX/drs/cwg28xx.cpp
@@ -134,18 +134,18 @@ struct A {
 
 } // namespace cwg2858
 
-namespace cwg2877 { // cwg2877: 19 ready 2024-05-31
+namespace cwg2877 { // cwg2877: 19 ready 2024-06-26
 #if __cplusplus >= 202002L
 enum E { x };
 void f() {
   int E;
-  using enum E;   // OK, names ::E
+  using enum E;   // OK
 }
 using F = E;
-using enum F;     // OK, designates ::E
+using enum F;     // OK
 template<class T> using EE = T;
 void g() {
-  using enum EE<E>;  // OK, designates ::E
+  using enum EE<E>;  // OK
 }
 #endif
 } // namespace cwg2877

>From 6093821889f0e274751fd1cb40486e85062ed4ba Mon Sep 17 00:00:00 2001
From: Mital Ashok <mital at mitalashok.co.uk>
Date: Sun, 30 Jun 2024 13:47:38 +0100
Subject: [PATCH 08/12] run make_cxx_dr_status

---
 clang/www/cxx_dr_status.html | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html
index 64b361976a5a5..363edc854fb52 100755
--- a/clang/www/cxx_dr_status.html
+++ b/clang/www/cxx_dr_status.html
@@ -15181,7 +15181,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2561.html">2561</a></td>
     <td>ready</td>
     <td>Conversion to function pointer for lambda with explicit object parameter</td>
-    <td title="Clang does not implement 2024-03-18 resolution" align="center">Not Resolved*</td>
+    <td title="Clang does not implement 2024-06-25 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr class="open" id="2562">
     <td><a href="https://cplusplus.github.io/CWG/issues/2562.html">2562</a></td>
@@ -16730,7 +16730,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2819.html">2819</a></td>
     <td>ready</td>
     <td>Cast from null pointer value in a constant expression</td>
-    <td title="Clang 19 implements 2023-12-01 resolution" align="center">Not Resolved*</td>
+    <td title="Clang 19 implements 2024-06-26 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr id="2820">
     <td><a href="https://cplusplus.github.io/CWG/issues/2820.html">2820</a></td>
@@ -17078,7 +17078,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2877.html">2877</a></td>
     <td>ready</td>
     <td>Type-only lookup for <I>using-enum-declarator</I></td>
-    <td title="Clang 19 implements 2024-05-31 resolution" align="center">Not Resolved*</td>
+    <td title="Clang 19 implements 2024-06-26 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr class="open" id="2878">
     <td><a href="https://cplusplus.github.io/CWG/issues/2878.html">2878</a></td>
@@ -17102,19 +17102,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2881.html">2881</a></td>
     <td>ready</td>
     <td>Type restrictions for the explicit object parameter of a lambda</td>
-    <td title="Clang 19 implements 2024-04-19 resolution" align="center">Not Resolved*</td>
+    <td title="Clang 19 implements 2024-06-26 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr class="open" id="2882">
     <td><a href="https://cplusplus.github.io/CWG/issues/2882.html">2882</a></td>
     <td>ready</td>
     <td>Unclear treatment of conversion to <TT>void</TT></td>
-    <td title="Clang 2.7 implements 2024-05-31 resolution" align="center">Not Resolved*</td>
+    <td title="Clang 2.7 implements 2024-06-27 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr class="open" id="2883">
     <td><a href="https://cplusplus.github.io/CWG/issues/2883.html">2883</a></td>
     <td>ready</td>
     <td>Definition of "odr-usable" ignores lambda scopes</td>
-    <td title="Clang does not implement 2024-05-31 resolution" align="center">Not Resolved*</td>
+    <td title="Clang does not implement 2024-06-27 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr id="2884">
     <td><a href="https://cplusplus.github.io/CWG/issues/2884.html">2884</a></td>
@@ -17126,13 +17126,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2885.html">2885</a></td>
     <td>review</td>
     <td>Non-eligible trivial default constructors</td>
-    <td title="Clang 16 implements 2024-05-31 resolution" align="center">Not Resolved*</td>
+    <td title="Clang 16 implements 2024-06-28 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr class="open" id="2886">
     <td><a href="https://cplusplus.github.io/CWG/issues/2886.html">2886</a></td>
     <td>ready</td>
     <td>Temporaries and trivial potentially-throwing special member functions</td>
-    <td title="Clang 9 implements 2024-05-31 resolution" align="center">Not Resolved*</td>
+    <td title="Clang 9 implements 2024-06-27 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr class="open" id="2887">
     <td><a href="https://cplusplus.github.io/CWG/issues/2887.html">2887</a></td>

>From b352930c4705d1167a66b7e54727295834c44501 Mon Sep 17 00:00:00 2001
From: Mital Ashok <mital at mitalashok.co.uk>
Date: Sun, 30 Jun 2024 18:34:04 +0100
Subject: [PATCH 09/12] Update cwg28xx.cpp

Use same error format as the other tests
---
 clang/test/CXX/drs/cwg28xx.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/test/CXX/drs/cwg28xx.cpp b/clang/test/CXX/drs/cwg28xx.cpp
index a2e689fbba74a..158e40a52bced 100644
--- a/clang/test/CXX/drs/cwg28xx.cpp
+++ b/clang/test/CXX/drs/cwg28xx.cpp
@@ -225,7 +225,7 @@ int main() {
     using Lambda::operator();
     friend Lambda;
   } d(lambda);
-  d(); // expected-error {{invalid explicit object parameter type 'D' in lambda with capture; the type must derive publicly from the lambda}}
+  d(); // expected-error {{must derive publicly from the lambda}}
 }
 
 #endif

>From 8fea7172d7eb9df11e7297ee3283ff1d60b49b66 Mon Sep 17 00:00:00 2001
From: Mital Ashok <mital at mitalashok.co.uk>
Date: Mon, 1 Jul 2024 19:17:27 +0100
Subject: [PATCH 10/12] CWG2881: Add SFINAE tests

---
 clang/test/CXX/drs/cwg28xx.cpp | 41 +++++++++++++++++++++++++++++++++-
 1 file changed, 40 insertions(+), 1 deletion(-)

diff --git a/clang/test/CXX/drs/cwg28xx.cpp b/clang/test/CXX/drs/cwg28xx.cpp
index 158e40a52bced..d97ce8565cb3e 100644
--- a/clang/test/CXX/drs/cwg28xx.cpp
+++ b/clang/test/CXX/drs/cwg28xx.cpp
@@ -153,6 +153,8 @@ void g() {
 namespace cwg2881 { // cwg2881: 19 ready 2024-06-26
 
 #if __cplusplus >= 202302L
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Winaccessible-base"
 
 template <typename T> struct A : T {};
 template <typename T> struct B : T {};
@@ -216,7 +218,7 @@ void f() {
   o.decltype(L2)::operator()();
 }
 
-int main() {
+void f2() {
   int x = 0;
   auto lambda = [x] (this auto self) { return x; };
   using Lambda = decltype(lambda);
@@ -228,6 +230,43 @@ int main() {
   d(); // expected-error {{must derive publicly from the lambda}}
 }
 
+template <typename L>
+struct Private : private L {
+  using L::operator();
+  Private(L l) : L(l) {}
+};
+
+template<typename T>
+struct Indirect : T {
+  using T::operator();
+};
+
+template<typename T>
+struct Ambiguous : Indirect<T>, T {
+  using Indirect<T>::operator();
+};
+
+template <typename L>
+constexpr auto f3(L l) -> decltype(Private<L>{l}()) { return l(); }
+// expected-note at -1 {{must derive publicly from the lambda}}
+
+template <typename L>
+constexpr auto f4(L l) -> decltype(Ambiguous<L>{{l}, l}()) { return l(); }
+// expected-note at -1 {{is inaccessible due to ambiguity}}
+
+template<typename T>
+concept is_callable = requires(T t) { { t() }; };
+
+void g() {
+  int x = 0;
+  auto lambda = [x](this auto self) {};
+  f3(lambda); // expected-error {{no matching function for call to 'f3'}}
+  f4(lambda); // expected-error {{no matching function for call to 'f4'}}
+  static_assert(!is_callable<Private<decltype(lambda)>>);
+  static_assert(!is_callable<Ambiguous<decltype(lambda)>>);
+}
+
+#pragma clang diagnostic pop
 #endif
 
 } // namespace cwg2881

>From bdc05595280cc25d84e8f4fdf2e3526c089e92c8 Mon Sep 17 00:00:00 2001
From: Mital Ashok <mital at mitalashok.co.uk>
Date: Wed, 24 Jul 2024 01:01:22 +0100
Subject: [PATCH 11/12] Some statuses changed

Ready -> Accepted or DR

Treat accepted like ready

Dates were changed to the first date when there were no changes to the proposed resolution

(Only https://raw.githubusercontent.com/cplusplus/CWG/gh-pages/issues/cwg_index.html shows 'accepted' as a status, individual pages like https://cplusplus.github.io/CWG/issues/2819.html still show 'ready')
---
 clang/test/CXX/drs/cwg25xx.cpp |   2 +-
 clang/test/CXX/drs/cwg28xx.cpp |  16 +-
 clang/www/cxx_dr_status.html   | 282 +++++++++++++++++----------------
 clang/www/make_cxx_dr_status   |   7 +-
 4 files changed, 156 insertions(+), 151 deletions(-)

diff --git a/clang/test/CXX/drs/cwg25xx.cpp b/clang/test/CXX/drs/cwg25xx.cpp
index 6280f9c0ad36f..1c0d32fe3fdfc 100644
--- a/clang/test/CXX/drs/cwg25xx.cpp
+++ b/clang/test/CXX/drs/cwg25xx.cpp
@@ -139,7 +139,7 @@ struct D3 : B {
 #endif
 
 #if __cplusplus >= 202302L
-namespace cwg2561 { // cwg2561: no ready 2024-06-25
+namespace cwg2561 { // cwg2561: no
 struct C {
     constexpr C(auto) { }
 };
diff --git a/clang/test/CXX/drs/cwg28xx.cpp b/clang/test/CXX/drs/cwg28xx.cpp
index d97ce8565cb3e..3b2284329e5db 100644
--- a/clang/test/CXX/drs/cwg28xx.cpp
+++ b/clang/test/CXX/drs/cwg28xx.cpp
@@ -30,7 +30,7 @@ using U2 = decltype(&main);
 #endif
 } // namespace cwg2811
 
-namespace cwg2819 { // cwg2819: 19 ready 2024-06-26
+namespace cwg2819 { // cwg2819: 19 accepted 2023-12-01
 #if __cpp_constexpr >= 202306L
   constexpr void* p = nullptr;
   constexpr int* q = static_cast<int*>(p);
@@ -111,7 +111,7 @@ struct D : N::B {
 #endif
 } // namespace cwg2857
 
-namespace cwg2858 { // cwg2858: 19 ready 2024-04-05
+namespace cwg2858 { // cwg2858: 19 accepted 2024-04-05
 
 #if __cplusplus > 202302L
 
@@ -134,7 +134,7 @@ struct A {
 
 } // namespace cwg2858
 
-namespace cwg2877 { // cwg2877: 19 ready 2024-06-26
+namespace cwg2877 { // cwg2877: 19
 #if __cplusplus >= 202002L
 enum E { x };
 void f() {
@@ -150,7 +150,7 @@ void g() {
 #endif
 } // namespace cwg2877
 
-namespace cwg2881 { // cwg2881: 19 ready 2024-06-26
+namespace cwg2881 { // cwg2881: 19
 
 #if __cplusplus >= 202302L
 #pragma clang diagnostic push
@@ -271,7 +271,7 @@ void g() {
 
 } // namespace cwg2881
 
-namespace cwg2882 { // cwg2882: 2.7 ready 2024-06-27
+namespace cwg2882 { // cwg2882: 2.7
 struct C {
   operator void() = delete;
   // expected-warning at -1 {{conversion function converting 'cwg2882::C' to 'void' will never be used}}
@@ -283,7 +283,7 @@ void f(C c) {
 }
 } // namespace cwg2882
 
-namespace cwg2883 { // cwg2883: no ready 2024-06-27
+namespace cwg2883 { // cwg2883: no
 #if __cplusplus >= 201103L
 void f() {
   int x;
@@ -308,7 +308,7 @@ void g() {
 #endif
 } // namespace cwg2883
 
-namespace cwg2885 { // cwg2885: 16 review 2024-06-28
+namespace cwg2885 { // cwg2885: 16 review 2024-05-31
 #if __cplusplus >= 202002L
 template <class T>
 struct A {
@@ -322,7 +322,7 @@ static_assert(!__is_trivially_constructible(B));
 #endif
 } // namespace cwg2885
 
-namespace cwg2886 { // cwg2886: 9 ready 2024-06-27
+namespace cwg2886 { // cwg2886: 9
 #if __cplusplus >= 201103L
 struct C {
   C() = default;
diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html
index 363edc854fb52..28a5eec2e896e 100755
--- a/clang/www/cxx_dr_status.html
+++ b/clang/www/cxx_dr_status.html
@@ -1440,11 +1440,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Is indirection through a null pointer undefined behavior?</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
-  <tr class="open" id="233">
+  <tr id="233">
     <td><a href="https://cplusplus.github.io/CWG/issues/233.html">233</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>References vs pointers in UDC overload resolution</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="234">
     <td><a href="https://cplusplus.github.io/CWG/issues/234.html">234</a></td>
@@ -2763,7 +2763,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="453">
     <td><a href="https://cplusplus.github.io/CWG/issues/453.html">453</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>References may only bind to “valid” objects</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -9567,11 +9567,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Adding spaces between tokens in stringizing</td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="1626">
+  <tr id="1626">
     <td><a href="https://cplusplus.github.io/CWG/issues/1626.html">1626</a></td>
-    <td>open</td>
+    <td>dup</td>
     <td><TT>constexpr</TT> member functions in <I>brace-or-equal-initializer</I>s</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="1627">
     <td><a href="https://cplusplus.github.io/CWG/issues/1627.html">1627</a></td>
@@ -11537,7 +11537,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="1954">
     <td><a href="https://cplusplus.github.io/CWG/issues/1954.html">1954</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td><TT>typeid</TT> null dereference check in subexpressions</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -12675,11 +12675,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Value-dependency via injected-class-name</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
-  <tr class="open" id="2144">
+  <tr id="2144">
     <td><a href="https://cplusplus.github.io/CWG/issues/2144.html">2144</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Function/variable declaration ambiguity</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2145">
     <td><a href="https://cplusplus.github.io/CWG/issues/2145.html">2145</a></td>
@@ -12707,7 +12707,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2149">
     <td><a href="https://cplusplus.github.io/CWG/issues/2149.html">2149</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Brace elision and array length deduction</td>
     <td class="full" align="center">Clang 3.1</td>
   </tr>
@@ -14669,7 +14669,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2476">
     <td><a href="https://cplusplus.github.io/CWG/issues/2476.html">2476</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td><I>placeholder-type-specifier</I>s and function declarators</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -15011,7 +15011,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2533">
     <td><a href="https://cplusplus.github.io/CWG/issues/2533.html">2533</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Storage duration of implicitly created objects</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -15089,13 +15089,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2546">
     <td><a href="https://cplusplus.github.io/CWG/issues/2546.html">2546</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Defaulted secondary comparison operators defined as deleted</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2547">
     <td><a href="https://cplusplus.github.io/CWG/issues/2547.html">2547</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Defaulted comparison operator function for non-classes</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -15173,15 +15173,15 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2560">
     <td><a href="https://cplusplus.github.io/CWG/issues/2560.html">2560</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Parameter type determination in a <I>requirement-parameter-list</I></td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
-  <tr class="open" id="2561">
+  <tr id="2561">
     <td><a href="https://cplusplus.github.io/CWG/issues/2561.html">2561</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Conversion to function pointer for lambda with explicit object parameter</td>
-    <td title="Clang does not implement 2024-06-25 resolution" align="center">Not Resolved*</td>
+    <td class="none" align="center">No</td>
   </tr>
   <tr class="open" id="2562">
     <td><a href="https://cplusplus.github.io/CWG/issues/2562.html">2562</a></td>
@@ -15221,7 +15221,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2568">
     <td><a href="https://cplusplus.github.io/CWG/issues/2568.html">2568</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Access checking during synthesis of defaulted comparison operator</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -15339,11 +15339,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Visible side effects and initial value of an object</td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="2588">
+  <tr id="2588">
     <td><a href="https://cplusplus.github.io/CWG/issues/2588.html">2588</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>friend declarations and module linkage</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr class="open" id="2589">
     <td><a href="https://cplusplus.github.io/CWG/issues/2589.html">2589</a></td>
@@ -15541,7 +15541,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2621.html">2621</a></td>
     <td>C++23</td>
     <td>Kind of lookup for <TT>using enum</TT> declarations</td>
-    <td class="-superseded" align="center">Superseded by <a href="#2877">2877</a></td>
+    <td class="unreleased-superseded" align="center">Superseded by <a href="#2877">2877</a></td>
   </tr>
   <tr id="2622">
     <td><a href="https://cplusplus.github.io/CWG/issues/2622.html">2622</a></td>
@@ -15617,7 +15617,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2634">
     <td><a href="https://cplusplus.github.io/CWG/issues/2634.html">2634</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Avoid circularity in specification of scope for friend class declarations</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -15635,13 +15635,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2637">
     <td><a href="https://cplusplus.github.io/CWG/issues/2637.html">2637</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Injected-class-name as a <I>simple-template-id</I></td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2638">
     <td><a href="https://cplusplus.github.io/CWG/issues/2638.html">2638</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Improve the example for initializing by initializer list</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -15755,7 +15755,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2657">
     <td><a href="https://cplusplus.github.io/CWG/issues/2657.html">2657</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Cv-qualification adjustment when binding reference to temporary</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -15779,7 +15779,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2661">
     <td><a href="https://cplusplus.github.io/CWG/issues/2661.html">2661</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Missing disambiguation rule for <I>pure-specifier</I> vs. <I>brace-or-equal-initializer</I></td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -15821,7 +15821,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2668">
     <td><a href="https://cplusplus.github.io/CWG/issues/2668.html">2668</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td><TT>co_await</TT> in a <I>lambda-expression</I></td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -15947,7 +15947,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2689">
     <td><a href="https://cplusplus.github.io/CWG/issues/2689.html">2689</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Are cv-qualified <TT>std::nullptr_t</TT> fundamental types?</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16013,7 +16013,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2700">
     <td><a href="https://cplusplus.github.io/CWG/issues/2700.html">2700</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td><TT>#error</TT> disallows existing implementation practice</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16055,7 +16055,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2707">
     <td><a href="https://cplusplus.github.io/CWG/issues/2707.html">2707</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Deduction guides cannot have a trailing <I>requires-clause</I></td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16097,7 +16097,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2714">
     <td><a href="https://cplusplus.github.io/CWG/issues/2714.html">2714</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Implicit deduction guides omit properties from the parameter-declaration-clause of a constructor</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16179,11 +16179,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Importing header units synthesized from source files</td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="2728">
+  <tr id="2728">
     <td><a href="https://cplusplus.github.io/CWG/issues/2728.html">2728</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Evaluation of conversions in a <I>delete-expression</I></td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2729">
     <td><a href="https://cplusplus.github.io/CWG/issues/2729.html">2729</a></td>
@@ -16283,13 +16283,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2745">
     <td><a href="https://cplusplus.github.io/CWG/issues/2745.html">2745</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Dependent odr-use in generic lambdas</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2746">
     <td><a href="https://cplusplus.github.io/CWG/issues/2746.html">2746</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Checking of default template arguments</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16301,7 +16301,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2748">
     <td><a href="https://cplusplus.github.io/CWG/issues/2748.html">2748</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Accessing static data members via null pointer</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16440,7 +16440,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2771">
     <td><a href="https://cplusplus.github.io/CWG/issues/2771.html">2771</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Transformation for <I>unqualified-id</I>s in address operator</td>
     <td class="full" align="center">Clang 18</td>
   </tr>
@@ -16464,7 +16464,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2775">
     <td><a href="https://cplusplus.github.io/CWG/issues/2775.html">2775</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Unclear argument type for copy of exception object</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16476,7 +16476,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2777">
     <td><a href="https://cplusplus.github.io/CWG/issues/2777.html">2777</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Type of <I>id-expression</I> denoting a template parameter object</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16632,7 +16632,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2803">
     <td><a href="https://cplusplus.github.io/CWG/issues/2803.html">2803</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Overload resolution for reference binding of similar types</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16668,19 +16668,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2809">
     <td><a href="https://cplusplus.github.io/CWG/issues/2809.html">2809</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>An implicit definition does not redeclare a function</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2810">
     <td><a href="https://cplusplus.github.io/CWG/issues/2810.html">2810</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Requiring the absence of diagnostics for templates</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2811">
     <td><a href="https://cplusplus.github.io/CWG/issues/2811.html">2811</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Clarify "use" of main</td>
     <td class="full" align="center">Clang 3.5</td>
   </tr>
@@ -16692,15 +16692,15 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2813">
     <td><a href="https://cplusplus.github.io/CWG/issues/2813.html">2813</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Class member access with prvalues</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
-  <tr class="open" id="2814">
+  <tr id="2814">
     <td><a href="https://cplusplus.github.io/CWG/issues/2814.html">2814</a></td>
-    <td>review</td>
+    <td>NAD</td>
     <td>Alignment requirement of incomplete class type</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr class="open" id="2815">
     <td><a href="https://cplusplus.github.io/CWG/issues/2815.html">2815</a></td>
@@ -16720,21 +16720,21 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>sizeof(abstract class) is underspecified</td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="2818">
+  <tr id="2818">
     <td><a href="https://cplusplus.github.io/CWG/issues/2818.html">2818</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Use of predefined reserved identifiers</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr class="open" id="2819">
     <td><a href="https://cplusplus.github.io/CWG/issues/2819.html">2819</a></td>
-    <td>ready</td>
+    <td>accepted</td>
     <td>Cast from null pointer value in a constant expression</td>
-    <td title="Clang 19 implements 2024-06-26 resolution" align="center">Not Resolved*</td>
+    <td title="Clang 19 implements 2023-12-01 resolution" align="center">Not Resolved*</td>
   </tr>
   <tr id="2820">
     <td><a href="https://cplusplus.github.io/CWG/issues/2820.html">2820</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Value-initialization and default constructors</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16746,7 +16746,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2822">
     <td><a href="https://cplusplus.github.io/CWG/issues/2822.html">2822</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Side-effect-free pointer zap</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16758,13 +16758,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2824">
     <td><a href="https://cplusplus.github.io/CWG/issues/2824.html">2824</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Copy-initialization of arrays</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2825">
     <td><a href="https://cplusplus.github.io/CWG/issues/2825.html">2825</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Range-based for statement using a <I>braced-init-list</I></td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16782,7 +16782,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2828">
     <td><a href="https://cplusplus.github.io/CWG/issues/2828.html">2828</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Ambiguous interpretation of C-style cast</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16794,13 +16794,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2830">
     <td><a href="https://cplusplus.github.io/CWG/issues/2830.html">2830</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Top-level cv-qualification should be ignored for list-initialization</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2831">
     <td><a href="https://cplusplus.github.io/CWG/issues/2831.html">2831</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Non-templated function definitions and <I>requires-clause</I>s</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16828,11 +16828,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Name-independent declarations</td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="2836">
+  <tr id="2836">
     <td><a href="https://cplusplus.github.io/CWG/issues/2836.html">2836</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Conversion rank of <TT>long double</TT> and extended floating-point types</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr class="open" id="2837">
     <td><a href="https://cplusplus.github.io/CWG/issues/2837.html">2837</a></td>
@@ -16884,13 +16884,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2845">
     <td><a href="https://cplusplus.github.io/CWG/issues/2845.html">2845</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Make the closure type of a captureless lambda a structural type</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2846">
     <td><a href="https://cplusplus.github.io/CWG/issues/2846.html">2846</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Out-of-class definitions of explicit object member functions</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16902,25 +16902,25 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2848">
     <td><a href="https://cplusplus.github.io/CWG/issues/2848.html">2848</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Omitting an empty template argument list for explicit instantiation</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2849">
     <td><a href="https://cplusplus.github.io/CWG/issues/2849.html">2849</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Parameter objects are not temporary objects</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2850">
     <td><a href="https://cplusplus.github.io/CWG/issues/2850.html">2850</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Unclear storage duration for function parameter objects</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2851">
     <td><a href="https://cplusplus.github.io/CWG/issues/2851.html">2851</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Allow floating-point conversions in converted constant expressions</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
@@ -16932,45 +16932,45 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr id="2853">
     <td><a href="https://cplusplus.github.io/CWG/issues/2853.html">2853</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Pointer arithmetic with pointer to hypothetical element</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2854">
     <td><a href="https://cplusplus.github.io/CWG/issues/2854.html">2854</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Storage duration of exception objects</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2855">
     <td><a href="https://cplusplus.github.io/CWG/issues/2855.html">2855</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Undefined behavior in postfix increment</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2856">
     <td><a href="https://cplusplus.github.io/CWG/issues/2856.html">2856</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Copy-list-initialization with explicit default constructors</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2857">
     <td><a href="https://cplusplus.github.io/CWG/issues/2857.html">2857</a></td>
-    <td>DR</td>
+    <td>DRWP</td>
     <td>Argument-dependent lookup with incomplete class types</td>
     <td class="none" align="center">No</td>
   </tr>
   <tr class="open" id="2858">
     <td><a href="https://cplusplus.github.io/CWG/issues/2858.html">2858</a></td>
-    <td>ready</td>
+    <td>accepted</td>
     <td>Declarative <I>nested-name-specifier</I>s and <I>pack-index-specifier</I>s</td>
     <td title="Clang 19 implements 2024-04-05 resolution" align="center">Not Resolved*</td>
   </tr>
-  <tr class="open" id="2859">
+  <tr id="2859">
     <td><a href="https://cplusplus.github.io/CWG/issues/2859.html">2859</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Value-initialization with multiple default constructors</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2860">
     <td><a href="https://cplusplus.github.io/CWG/issues/2860.html">2860</a></td>
@@ -16978,11 +16978,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Remove and fix the term "vacuous initialization"</td>
     <td class="unknown" align="center">Unknown</td>
   </tr>
-  <tr class="open" id="2861">
+  <tr id="2861">
     <td><a href="https://cplusplus.github.io/CWG/issues/2861.html">2861</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td><TT>dynamic_cast</TT> on bad pointer value</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr class="open" id="2862">
     <td><a href="https://cplusplus.github.io/CWG/issues/2862.html">2862</a></td>
@@ -16996,17 +16996,17 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Unclear synchronization requirements for object lifetime rules</td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="2864">
+  <tr id="2864">
     <td><a href="https://cplusplus.github.io/CWG/issues/2864.html">2864</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Narrowing floating-point conversions</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
-  <tr class="open" id="2865">
+  <tr id="2865">
     <td><a href="https://cplusplus.github.io/CWG/issues/2865.html">2865</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Regression on result of conditional operator</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr class="open" id="2866">
     <td><a href="https://cplusplus.github.io/CWG/issues/2866.html">2866</a></td>
@@ -17014,11 +17014,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Observing the effects of <TT>[[no_unique_address]]</TT></td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="2867">
+  <tr id="2867">
     <td><a href="https://cplusplus.github.io/CWG/issues/2867.html">2867</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Order of initialization for structured bindings</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr class="open" id="2868">
     <td><a href="https://cplusplus.github.io/CWG/issues/2868.html">2868</a></td>
@@ -17026,29 +17026,29 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Self-references in trivially copyable objects as function return values</td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="2869">
+  <tr id="2869">
     <td><a href="https://cplusplus.github.io/CWG/issues/2869.html">2869</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td><TT>this</TT> in local classes</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
-  <tr class="open" id="2870">
+  <tr id="2870">
     <td><a href="https://cplusplus.github.io/CWG/issues/2870.html">2870</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Combining absent <I>encoding-prefix</I>es</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
-  <tr class="open" id="2871">
+  <tr id="2871">
     <td><a href="https://cplusplus.github.io/CWG/issues/2871.html">2871</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>User-declared constructor templates inhibiting default constructors</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
-  <tr class="open" id="2872">
+  <tr id="2872">
     <td><a href="https://cplusplus.github.io/CWG/issues/2872.html">2872</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Linkage and unclear "can be referred to"</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr class="open" id="2873">
     <td><a href="https://cplusplus.github.io/CWG/issues/2873.html">2873</a></td>
@@ -17056,11 +17056,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Taking the address of a function involving template argument deduction</td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="2874">
+  <tr id="2874">
     <td><a href="https://cplusplus.github.io/CWG/issues/2874.html">2874</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Qualified declarations of partial specializations</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr class="open" id="2875">
     <td><a href="https://cplusplus.github.io/CWG/issues/2875.html">2875</a></td>
@@ -17070,15 +17070,15 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
   </tr>
   <tr class="open" id="2876">
     <td><a href="https://cplusplus.github.io/CWG/issues/2876.html">2876</a></td>
-    <td>ready</td>
+    <td>accepted</td>
     <td>Disambiguation of <TT>T x = delete("text")</TT></td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="2877">
+  <tr id="2877">
     <td><a href="https://cplusplus.github.io/CWG/issues/2877.html">2877</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Type-only lookup for <I>using-enum-declarator</I></td>
-    <td title="Clang 19 implements 2024-06-26 resolution" align="center">Not Resolved*</td>
+    <td class="unreleased" align="center">Clang 19</td>
   </tr>
   <tr class="open" id="2878">
     <td><a href="https://cplusplus.github.io/CWG/issues/2878.html">2878</a></td>
@@ -17098,23 +17098,23 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Accessibility check for destructor of incomplete class type</td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="2881">
+  <tr id="2881">
     <td><a href="https://cplusplus.github.io/CWG/issues/2881.html">2881</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Type restrictions for the explicit object parameter of a lambda</td>
-    <td title="Clang 19 implements 2024-06-26 resolution" align="center">Not Resolved*</td>
+    <td class="unreleased" align="center">Clang 19</td>
   </tr>
-  <tr class="open" id="2882">
+  <tr id="2882">
     <td><a href="https://cplusplus.github.io/CWG/issues/2882.html">2882</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Unclear treatment of conversion to <TT>void</TT></td>
-    <td title="Clang 2.7 implements 2024-06-27 resolution" align="center">Not Resolved*</td>
+    <td class="full" align="center">Clang 2.7</td>
   </tr>
-  <tr class="open" id="2883">
+  <tr id="2883">
     <td><a href="https://cplusplus.github.io/CWG/issues/2883.html">2883</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Definition of "odr-usable" ignores lambda scopes</td>
-    <td title="Clang does not implement 2024-06-27 resolution" align="center">Not Resolved*</td>
+    <td class="none" align="center">No</td>
   </tr>
   <tr id="2884">
     <td><a href="https://cplusplus.github.io/CWG/issues/2884.html">2884</a></td>
@@ -17126,19 +17126,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td><a href="https://cplusplus.github.io/CWG/issues/2885.html">2885</a></td>
     <td>review</td>
     <td>Non-eligible trivial default constructors</td>
-    <td title="Clang 16 implements 2024-06-28 resolution" align="center">Not Resolved*</td>
+    <td title="Clang 16 implements 2024-05-31 resolution" align="center">Not Resolved*</td>
   </tr>
-  <tr class="open" id="2886">
+  <tr id="2886">
     <td><a href="https://cplusplus.github.io/CWG/issues/2886.html">2886</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Temporaries and trivial potentially-throwing special member functions</td>
-    <td title="Clang 9 implements 2024-06-27 resolution" align="center">Not Resolved*</td>
+    <td class="full" align="center">Clang 9</td>
   </tr>
-  <tr class="open" id="2887">
+  <tr id="2887">
     <td><a href="https://cplusplus.github.io/CWG/issues/2887.html">2887</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Missing compatibility entries for xvalues</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr class="open" id="2888">
     <td><a href="https://cplusplus.github.io/CWG/issues/2888.html">2888</a></td>
@@ -17158,17 +17158,17 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Defining members of local classes</td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="2891">
+  <tr id="2891">
     <td><a href="https://cplusplus.github.io/CWG/issues/2891.html">2891</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Normative status of implementation limits</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
-  <tr class="open" id="2892">
+  <tr id="2892">
     <td><a href="https://cplusplus.github.io/CWG/issues/2892.html">2892</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Unclear usual arithmetic conversions</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr id="2893">
     <td><a href="https://cplusplus.github.io/CWG/issues/2893.html">2893</a></td>
@@ -17182,11 +17182,11 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>Functional casts create prvalues of reference type</td>
     <td align="center">Not resolved</td>
   </tr>
-  <tr class="open" id="2895">
+  <tr id="2895">
     <td><a href="https://cplusplus.github.io/CWG/issues/2895.html">2895</a></td>
-    <td>ready</td>
+    <td>DR</td>
     <td>Initialization should ignore the destination type's cv-qualification</td>
-    <td align="center">Not resolved</td>
+    <td class="unknown" align="center">Unknown</td>
   </tr>
   <tr class="open" id="2896">
     <td><a href="https://cplusplus.github.io/CWG/issues/2896.html">2896</a></td>
@@ -17289,6 +17289,12 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
     <td>open</td>
     <td>Too-large value for size in array new</td>
     <td align="center">Not resolved</td>
+  </tr>
+  <tr class="open" id="2913">
+    <td><a href="https://cplusplus.github.io/CWG/issues/2913.html">2913</a></td>
+    <td>open</td>
+    <td>Grammar for <I>deduction-guide</I> has <I>requires-clause</I> in the wrong position</td>
+    <td align="center">Not resolved</td>
   </tr></table>
 
 </div>
diff --git a/clang/www/make_cxx_dr_status b/clang/www/make_cxx_dr_status
index fe267a6ddbfb2..59f6715febadf 100755
--- a/clang/www/make_cxx_dr_status
+++ b/clang/www/make_cxx_dr_status
@@ -142,13 +142,12 @@ availability_error_occurred = False
 
 def availability(issue):
   status = status_map.get(issue, 'unknown')
-
   unresolved_status = ''
   proposed_resolution = ''
-  unresolved_status_match = re.search(r' (open|drafting|review|tentatively ready|ready)', status)
+  unresolved_status_match = re.search(r' (open|drafting|review|tentatively ready|ready|accepted)', status)
   if unresolved_status_match:
     unresolved_status = unresolved_status_match.group(1)
-    proposed_resolution_match = re.search(r' (open|drafting|review|tentatively ready|ready) (\d{4}-\d{2}(?:-\d{2})?|P\d{4}R\d+)$', status)
+    proposed_resolution_match = re.search(r' (open|drafting|review|tentatively ready|ready|accepted) (\d{4}-\d{2}(?:-\d{2})?|P\d{4}R\d+)$', status)
     if proposed_resolution_match is None:
       raise AvailabilityError('Issue {}: \'{}\' status should be followed by a paper number (P1234R5) or proposed resolution in YYYY-MM-DD format'.format(dr.issue, unresolved_status))
     proposed_resolution = proposed_resolution_match.group(2)
@@ -246,7 +245,7 @@ for dr in drs:
     avail = 'Extension'
     avail_style = ''
 
-  elif dr.status in ('open', 'drafting', 'review', 'tentatively ready', 'ready'):
+  elif dr.status in ('open', 'drafting', 'review', 'tentatively ready', 'ready', 'accepted'):
     row_style = ' class="open"'
     try:
       avail, avail_style, unresolved_status, tooltip = availability(dr.issue)

>From d7bf12040932c082ca2ebddee670bd5f1570b15b Mon Sep 17 00:00:00 2001
From: Mital Ashok <mital at mitalashok.co.uk>
Date: Wed, 24 Jul 2024 01:28:28 +0100
Subject: [PATCH 12/12] Remove #pragma clang diagnostic ignored

---
 clang/test/CXX/drs/cwg28xx.cpp | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/clang/test/CXX/drs/cwg28xx.cpp b/clang/test/CXX/drs/cwg28xx.cpp
index 3b2284329e5db..e66038e7c4104 100644
--- a/clang/test/CXX/drs/cwg28xx.cpp
+++ b/clang/test/CXX/drs/cwg28xx.cpp
@@ -153,8 +153,6 @@ void g() {
 namespace cwg2881 { // cwg2881: 19
 
 #if __cplusplus >= 202302L
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Winaccessible-base"
 
 template <typename T> struct A : T {};
 template <typename T> struct B : T {};
@@ -242,7 +240,7 @@ struct Indirect : T {
 };
 
 template<typename T>
-struct Ambiguous : Indirect<T>, T {
+struct Ambiguous : Indirect<T>, T { // expected-warning {{is inaccessible due to ambiguity}}
   using Indirect<T>::operator();
 };
 
@@ -253,6 +251,7 @@ constexpr auto f3(L l) -> decltype(Private<L>{l}()) { return l(); }
 template <typename L>
 constexpr auto f4(L l) -> decltype(Ambiguous<L>{{l}, l}()) { return l(); }
 // expected-note at -1 {{is inaccessible due to ambiguity}}
+// expected-note at -2 {{in instantiation of template class}}
 
 template<typename T>
 concept is_callable = requires(T t) { { t() }; };
@@ -262,11 +261,11 @@ void g() {
   auto lambda = [x](this auto self) {};
   f3(lambda); // expected-error {{no matching function for call to 'f3'}}
   f4(lambda); // expected-error {{no matching function for call to 'f4'}}
+  // expected-note at -1 {{while substituting deduced template arguments into function template 'f4'}}
   static_assert(!is_callable<Private<decltype(lambda)>>);
   static_assert(!is_callable<Ambiguous<decltype(lambda)>>);
 }
 
-#pragma clang diagnostic pop
 #endif
 
 } // namespace cwg2881



More information about the cfe-commits mailing list