// Copyright (C) 2008 N. Musatti // 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_NESTED_FRIENDSHIP // TITLE: Access to private members from nested classes // DESCRIPTION: If the compiler fails to support access to private members // from nested classes namespace boost_no_nested_friendship { class A { public: A() {} struct B { int f(A& a) { a.f1(); a.f2(a); return a.b; } }; private: static int b; static void f1(){} template static void f2(const T&){} }; int A::b = 0; int test() { A a; A::B b; return b.f(a); } }