c++中set和multiset之间的多态性

polymorphism between set and multiset in c++

有没有一种方法可以使用多态性来为集合和多重集合提供泛型?如下

注意:但仅适用于集合,(集合、多重集合)

template<typename T>
void foo(parent_set<T> &s) {
    // do something
}
// main
set<int> s1 = {1, 2, 3, 4, 5};
foo(s1);
multiset<int> s2 = {1, 2, 2, 2, 2, 3};
foo(s2); 

那么,为什么不将整个容器作为模板参数呢?

template <class SetType>
void foo( SetType&  s)
{
    using T = typename SetType :: value_type;
    enter code here
    ....
}

参数只能是集合或多重集的限制(通常对模板所做的)是通过将模板参数用作集合来强制执行的。例如。您使用单个参数调用插入,因此您不能传递向量。如果有第三个未知的容器具有所有必需的接口,也许允许它也有意义?