[PR c++/84702] ICE with default tmpl arg of overload set
[official-gcc.git] / gcc / testsuite / g++.dg / template / memfriend4.C
blob5c006fe84f31bc1b8f5e87b4075106a6e532d9d3
1 // { dg-do compile }
3 // Copyright (C) 2003 Free Software Foundation
4 // Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6 // Member function of class template as friend
8 template<class T> struct A
10   template <T t> void f();
13 class C {
14   int i;
15   template<class T> template <T t> friend void A<T>::f();
18 template<class T> struct A<T*>
20   template <T* t> void f();
23 template<> struct A<char>
25   template <char t> void f();
28 template<class T> template <T t> void A<T>::f()
30   C c;
31   c.i = 0;
34 template<class T> template <T* t> void A<T*>::f()
36   C c;
37   c.i = 0;
40 template <char t> void A<char>::f()
42   C c;
43   c.i = 0;
46 template <> void A<char>::f<'b'>()
48   C c;
49   c.i = 0;
52 int d2 = 0;
54 int main()
56   A<int> a1;
57   a1.f<0>();
58   A<int *> a2;
59   a2.f<&d2>();
60   A<char> a3;
61   a3.f<'a'>();
62   a3.f<'b'>();