[clang] [Clang] Fix handling of pack indexing types in constraints of redeclaration (PR #139057)

Younan Zhang via cfe-commits cfe-commits at lists.llvm.org
Fri May 9 05:23:49 PDT 2025


================
@@ -779,3 +781,59 @@ template <typename T>
 consteval void S::mfn() requires (bool(&fn)) {}
 
 }
+
+
+namespace GH138255 {
+
+  template <typename... T>
+  concept C = true;
+
+  struct Func {
+      template<typename... Ts>
+      requires C<Ts...[0]>
+      static auto buggy() -> void;
+
+      template<typename... Ts>
+      requires C<Ts...[0]>
+      friend auto fr() -> void;
+
+      template<typename... Ts>
+      requires C<Ts...[0]>
+      friend auto fr2() -> void{}; // expected-note{{previous definition is here}}
+  };
+
+  template<typename... Ts>
+  requires C<Ts...[0]>
+  auto Func::buggy() -> void {}
+
+  template<typename... Ts>
+  requires C<Ts...[0]>
+  auto fr() -> void {}
+
+  template<typename... Ts>
+  requires C<Ts...[0]>
+  auto fr2() -> void {} // expected-error{{redefinition of 'fr2'}}
+
+
+  template <typename... Ts>
+  requires C<Ts...[0]>
+  struct Class;
+
+  template <typename... Ts>
+  requires C<Ts...[0]>
+  struct Class;
----------------
zyn0217 wrote:

These are unused

https://github.com/llvm/llvm-project/pull/139057


More information about the cfe-commits mailing list