template <typename Object, typename Sequence> // set intersection class IntersectMerger : public Merger<Object, Sequence> { protected: virtual void aIsLess(const Object& a, Sequence& C) { } // ignore 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) { } // ignore public: IntersectMerger() { } };