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

Reply via email to