/******************************************************************************/ /* */ /* FILE: may.cpp */ /* */ /* CountIterator frees the world of explicit loops ! */ /* ================================================= */ /* */ /* Compiled and tested with Visual C++ V6.0 */ /* */ /* V1.00 31-MAY-2002 P. Tellenbach http://www.heimetli.ch/ */ /* */ /******************************************************************************/ #include <iostream> #include <iterator> #include <string> #include <algorithm> #include <functional> template< class T > class CountIterator : public std::iterator<std::input_iterator_tag,T> { private: T value ; public: CountIterator( T v ) : value(v) { } bool operator==( const CountIterator &other ) { return value == other.value ; } bool operator!=( const CountIterator &other ) { return !(*this == other) ; } const T &operator*() { return value ; } const T *operator->() { return &value ; } CountIterator &operator++() { value++ ; return *this ; } CountIterator operator++( int ) { CountIterator tmp( *this ) ; this->operator++() ; return tmp ; } } ; class Function { private: std::string str ; public: Function() : str( "Hello world !\n" ) { } std::ostream &operator()( int index ) { return std::cout.put( str.at(index) ) ; } } ; int main() { std::for_each( CountIterator<int>(0), CountIterator<int>(14), Function() ) ; return 0 ; }
Update 29. May 2022
This program compiles and runs without any changes.