+++ /dev/null
-// { dg-do compile }
-
-namespace boost_no_member_template_friends{
-
-template <class T>
-class foobar;
-
-template <class T>
-class foo
-{
-private:
- template<typename Y> friend class foobar;
- template<typename Y> friend class foo;
- template<typename Y> friend bool must_be_friend_proc(const foo<Y>& f);
- int i;
-public:
- foo(){ i = 0; }
- template <class U>
- foo(const foo<U>& f){ i = f.i; }
-};
-
-template <class T>
-class foo;
-
-template <class T>
-bool must_be_friend_proc(const foo<T>& f);
-
-template <class T>
-bool must_be_friend_proc(const foo<T>& f)
-{ return f.i != 0; }
-
-template <class T>
-class foobar
-{
- int i;
-public:
- template <class U>
- foobar(const foo<U>& f)
- { i = f.i; }
-};
-
-
-int test()
-{
- foo<int> fi;
- foo<double> fd(fi);
- (void) &fd; // avoid "unused variable" warning
- foobar<long> fb(fi);
- (void) &fb; // avoid "unused variable" warning
- return 0;
-}
-
-}