typename iterators::enable_if< is_class<UnaryFunction> // We should probably find a cheaper test than is_class<> , transform_iterator<UnaryFunction, Iterator> >::type make_transform_iterator(Iterator it) { return transform_iterator<UnaryFunction, Iterator>(it, UnaryFunction()); }
struct my_function_s : public ConcreteUnaryFunction<T> { T operator()(const T& x) const { operation_on_x(); } } UnaryFunction my_function() { return UnaryFunction(new my_function_s<doubleint>()); }
explicit transform_iterator(const Iterator &it, const UnaryFunction &f = UnaryFunction()) : UnaryFunction(f), m_it(it) {}
inline function_output_iterator<UnaryFunction> make_function_output_iterator(const UnaryFunction& f = UnaryFunction()) { return function_output_iterator<UnaryFunction>(f); }
explicit function_output_iterator(const UnaryFunction& f = UnaryFunction()) : m_f(f) {}
explicit transform_iterator(const Iterator &it, const UnaryFunction &f = UnaryFunction()) : members_(it, f) {}
PropertyUnaryFunction(Property property, UnaryFunction unary_function = UnaryFunction()) : property(property), unary_function(unary_function) { }