//: C05:FriendScope.cpp
// Z knihy "Myslíme v jazyce C++, část 2" od Bruce Eckela a Chucka Allisona.
// (c) 1995-2004 MindView, Inc. Všechna práva vyhrazena.
// Přečtěte si podmínky používání zdrojových kódů umístěné v souboru 
// 'Licence.txt' dodávaném spolu s balíčkem kódu dostupným na www.MindView.net.
#include <iostream>
using namespace std;

class Friendly {
  int i;
public:
  Friendly(int theInt) { i = theInt; }
  friend void f(const Friendly&); // vyžaduje globální definici
  void g() { f(*this); }
};

void h() {
  f(Friendly(1));  // Používá ADL
}

void f(const Friendly& fo) {  // definice spřátelené funkce
  cout << fo.i << endl;
}

int main() {
  h(); // Vytiskne 1
  Friendly(2).g(); // Vytiskne 2
} ///:~
