Tested x86_64-pc-linux-gnu, applying to trunk.
-- >8 --
This got fixed by r15-2120.
PR c++/115616
gcc/testsuite/ChangeLog:
* g++.dg/template/friend83.C: New test.
---
gcc/testsuite/g++.dg/template/friend83.C | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
create mode 100644 gcc/testsuite/g++.dg/template/friend83.C
diff --git a/gcc/testsuite/g++.dg/template/friend83.C
b/gcc/testsuite/g++.dg/template/friend83.C
new file mode 100644
index 00000000000..edd29614b31
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/friend83.C
@@ -0,0 +1,24 @@
+// PR c++/115616
+// { dg-do compile { target c++20 } }
+
+template <int X, int Y> void bar() {}
+
+template <typename T>
+struct Reader
+{
+ template <int X>
+ friend void foo(Reader<T>);
+};
+
+template <typename T, int Y>
+struct Writer
+{
+ template <int X>
+ friend void foo(Reader<T>) {bar<X, Y>();}
+};
+
+int main()
+{
+ foo<10>(Reader<int>{});
+ Writer<int, 20>{};
+}
base-commit: f93a38f3fc8b20942896d037f3833d6b383dd3d8
--
2.46.0