//: C06:ForEach.cpp {-mwcc}
// 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.
// Použití STL algoritmu for_each()
//{L} Counted
#include <algorithm>
#include <iostream>
#include "Counted.h"
using namespace std;

// funktor:
template<class T> class DeleteT {
public:
  void operator()(T* x) { delete x; }
};

// Šablona funkce:
template<class T> void smazat(T* x) { delete x; }

int main() {
  PocitanyVector B("dva");
  for_each(B.begin(), B.end(), DeleteT<Pocitana>());
  PocitanyVector C("tři");
  for_each(C.begin(), C.end(), smazat<Pocitana>);
} ///:~
