C++ 通行证;“值类型”;作为模板的默认第二个参数

C++ 通行证;“值类型”;作为模板的默认第二个参数,c++,templates,C++,Templates,我正在为类编写一个模板,该类将一些STL容器(字符串、向量、列表)作为第一个参数,第二个参数默认为运算符字符,向量->T,列表->T) template//使用T作为T2会导致 //从“char”到“const char*”的转换 //(对于作为T的字符串) 类MyClass { ... 公众: CIndex(常数T&x,常数C&comp=C()){ ... } 这个问题的解决方案是什么?是不太依赖于类型T的参数?非常感谢您的帮助,我对模板不太熟悉使用容器的值\u类型: template &l

我正在为类编写一个模板,该类将一些STL容器(字符串、向量、列表)作为第一个参数,第二个参数默认为运算符<。我发现in是更少的,所以我尝试实现它。问题是我不能得到T2,它应该是T的“值类型”(字符串->字符,向量->T,列表->T)

template//使用T作为T2会导致
//从“char”到“const char*”的转换
//(对于作为T的字符串)
类MyClass
{
...
公众:
CIndex(常数T&x,常数C&comp=C()){
...
}

这个问题的解决方案是什么?是不太依赖于类型T的参数?非常感谢您的帮助,我对模板不太熟悉

使用容器的
值\u类型

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

在哪里声明了
T2
?它应该是模板的一部分吗?或者它是一个单独的类型?我想你指的是值类型(容器中元素的类型),而不是分配器类型(复杂得多)。在这种情况下,在有T2的地方使用
typename T::value\u type可能会起作用。你的标题,以防止混淆。
template <typename T, typename C = less<typename T::value_type> >