================
@@ -134,23 +134,23 @@ struct A {
 
 } // namespace cwg2858
 
-namespace cwg2877 { // cwg2877: 19 tentatively 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
 
-namespace cwg2881 { // cwg2881: 19 tentatively ready 2024-04-19
+namespace cwg2881 { // cwg2881: 19 ready 2024-06-26
 
----------------
Sirraide wrote:

A test for substitution failure would be nice since that seems to be the only 
thing that has changed about this issue; maybe something like the following, 
which we seem to already be handling correctly:
```c++
template <typename L>
struct Private : private L {
    using L::operator();
    Private(L l) : L(l) {}
};

template <typename L>
constexpr auto f(L l) -> decltype(Private<L>{l}()) { return l(); }

void g() {
    int x;
    auto lambda = [x](this auto self) {};
    f(lambda); // Fails due to substitution failure here.
}
```

https://github.com/llvm/llvm-project/pull/97200
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to