传递"值类型"作为模板的默认第二个参数

时间:2014-04-12 13:25:28

标签: c++ templates

我正在为类编写一个模板,它将第一个参数作为一个STL容器(字符串,向量,列表),第二个参数是operator<默认情况下。我发现它不是那么我试图实现它。问题是我无法获得T2应该是T的“值类型”(字符串 - > char,vector - > T,list - > T)

template <typename T, typename C = less<T2> > // using T as T2 leads to error in
                                              // conversion from 'char' to 'const char *'
                                              // (for string as T)
class MyClass
{
  ...
   public:
       CIndex ( const T& x, const C& comp = C ()) {}
  ...
}

什么是解决方案?是不是依赖于T型的争论?非常感谢你的帮助,我对模板不太熟悉

1 个答案:

答案 0 :(得分:3)

使用容器value_type

template <typename T, typename C = less<typename T::value_type> >