在C中提取另一个泛型类型的泛型类型

假设我有一个类Foo,它使用两种不同的泛型类型,一种是_Type,另一种是_Comparator. _Type已知是std :: vector,std :: list或std :: string,因此它将包含一个类型:T将在vector和list中; char将在字符串中.

我的另一个泛型类型_Comparator是一个可选的模板参数,用户可以通过该参数指定自己的函数,函子或lambda函数.如果没有提供参数作为第二个模板参数,则它应该默认为std :: less< M>仿函数,其中类型M应为_Type中包含的元素类型.

我不知道如何执行此操作的语法.

我试过了:

template <typename _Type<T>, typename _Comparator = less<T> >

无济于事.

最佳答案 使用@Joachim Pileborg在评论中提到的方法,我能够提出以下内容,这使我能够访问_Type的内部类型:

template <typename _Type, 
    typename _Comparator = less<typename _Type:: value_type> >
class Foo
{
    public:
        // some methods
    private:
        _Type sequence;
        _Comparator comparator;
};

现在std :: less比较正确的类型而不抱怨.

点赞