template <typename Object, typename Sequence> // set union class UnionMerger : public Merger<Object, Sequence> { protected: virtual void aIsLess(const Object& a, Sequence& C) { C.insertLast(a); } // add a virtual void bothEqual(const Object& a, const Object& b, Sequence& C) { C.insertLast(a); } // add a only virtual void bIsLess(const Object& b, Sequence& C) { C.insertLast(b); } // add b public: UnionMerger() { } };