template void read_words(std::istream& is, OutIt dest) { typedef std::istream_iterator InIt; std::copy(InIt(is), InIt(), dest); } namespace detail { struct ReadableLine : public std::string { friend std::istream & operator>>(std::istream & is, ReadableLine & line) { return std::getline(is, line); } }; } template void read_lines(std::istream& is, OutIt dest) { typedef std::istream_iterator InIt; std::copy(InIt(is), InIt(), dest); }