我正在为类编写一个模板,它将第一个参数作为一个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型的争论?非常感谢你的帮助,我对模板不太熟悉
答案 0 :(得分:3)
使用容器value_type
:
template <typename T, typename C = less<typename T::value_type> >