// (C) Copyright John Maddock 2001. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org/libs/config for most recent version. // MACRO: BOOST_NO_MEMBER_TEMPLATE_FRIENDS // TITLE: member template friends // DESCRIPTION: Member template friend syntax // ("template friend class frd;") // described in the C++ Standard, // 14.5.3, not supported. namespace boost_no_member_template_friends{ template class foobar; template class foo; template bool must_be_friend_proc(const foo& f); template class foo { private: template friend class foobar; template friend class foo; template friend bool must_be_friend_proc(const foo& f); int i; public: foo(){ i = 0; } template foo(const foo& f){ i = f.i; } }; template bool must_be_friend_proc(const foo& f) { return f.i != 0; } template class foobar { int i; public: template foobar(const foo& f) { i = f.i; } }; int test() { foo fi; foo fd(fi); must_be_friend_proc(fd); foobar fb(fi); (void) &fb; // avoid "unused variable" warning return 0; } }