================ @@ -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