// // Created by mwo on 24/05/15. // // source: http://codereview.stackexchange.com/questions/13176/infix-iterator-code // infix_iterator.h #if !defined(INFIX_ITERATOR_H_) #define INFIX_ITERATOR_H_ #include #include #include template > class infix_ostream_iterator : public std::iterator { std::basic_ostream *os; std::basic_string delimiter; std::basic_string real_delim; public: typedef charT char_type; typedef traits traits_type; typedef std::basic_ostream ostream_type; infix_ostream_iterator(ostream_type &s) : os(&s) {} infix_ostream_iterator(ostream_type &s, charT const *d) : os(&s), real_delim(d) {} infix_ostream_iterator &operator=(T const &item) { *os << delimiter << item; delimiter = real_delim; return *this; } infix_ostream_iterator &operator*() { return *this; } infix_ostream_iterator &operator++() { return *this; } infix_ostream_iterator &operator++(int) { return *this; } }; #endif