Ještě jeden komentář: správně C++kovsky by funkce filter měla vypadat takto: template OutputIterator filter(InputIterator first, InputIterator last, OutputIterator result, bool (&func)(typename InputIterator::value_type item)) { while (first != last) { if (func(*first)) { *result++ = *first; } first++; } return result; } a funkce isEven takto: template bool isEven(Numeric i) { return (i % 2) == 0; } a funkci filter voláme takto: filter(l.begin(), l.end(), std::back_inserter(l2), isEven);