假设我有一个类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比较正确的类型而不抱怨.