template struct overload { operator T&() { return t; } operator const T&() const { return t; } T t; }; std::istream & operator >> (std::istream & is, overload & v) { } std::istream & operator >> (std::istream & is, overload & v) { } std::istream & operator >> (std::istream & is, overload & v) { } and an example of use: compare(is,"[KONEKSJE]",name+".msh",0); transform_n(std::istream_iterator >(is),elements_q,back_inserter(connection_v),index2iter, n_iter_v>(&node_v)); compare(is,"[BRZEGI]",name+".msh",0); transform_n(std::istream_iterator >(is),edge_q,back_inserter(edge_v),index2iter, n_iter_v>(&node_v)); compare(is,"[OBSZARY]",name+".msh",0); transform_n(std::istream_iterator >(is),area_q,back_inserter(area_v),index2iter, c_iter_v>(&edge_v));