template map & mapassign (map &to, unsigned dummy_size, const ullmanmap &from) { assert (dummy_size == from.size ()); to = map (); for (ullmanmap_const_iter i = from; i; i ++) to.push (i.key (), i.val ()); return to; } template ullmanmap & mapassign (ullmanmap &to, unsigned size, const map &from) { to = ullmanmap (size); for (typename map::const_iter i = from; i; i ++) to.push (i.key (), i.val ()); return to; } template map & mapassign (map &to, unsigned dummy_size, const map &from) { // todo: ?? careful about allocation: this unref's the previous object pointed to by to to = map (COPY, from); return to; }