FSF GCC merge 02/23/03
[official-gcc.git] / gcc / testsuite / g++.dg / template / friend6.C
blobe330d981892cfc2ce4bf2025c8db0c90e1c2909e
1 // { dg-do compile }
3 namespace boost_no_member_template_friends{
5 template <class T>
6 class foobar;
8 template <class T>
9 class foo
11 private:
12    template<typename Y> friend class foobar;
13    template<typename Y> friend class foo;
14    template<typename Y> friend bool must_be_friend_proc(const foo<Y>& f);
15    int i;
16 public:
17    foo(){ i = 0; }
18    template <class U>
19    foo(const foo<U>& f){ i = f.i; }
22 template <class T>
23 class foo;
25 template <class T>
26 bool must_be_friend_proc(const foo<T>& f);
28 template <class T>
29 bool must_be_friend_proc(const foo<T>& f)
30 { return f.i != 0; }
32 template <class T>
33 class foobar
35    int i;
36 public:
37    template <class U>
38    foobar(const foo<U>& f)
39    { i = f.i; }
43 int test()
45    foo<int> fi;
46    foo<double> fd(fi);
47    (void) &fd;           // avoid "unused variable" warning
48    foobar<long> fb(fi);
49    (void) &fb;           // avoid "unused variable" warning
50    return 0;