【发布时间】:2014-04-12 13:25:27
【问题描述】:
我正在为类编写一个模板,该模板将某个 STL 容器(字符串、向量、列表)作为第一个参数,默认情况下第二个参数是 operator 字符,向量 -> T,列表 -> 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 的论点?非常感谢您的帮助,我对模板没有太多经验
【问题讨论】:
-
T2在哪里声明?它应该是模板的一部分吗?还是单独的类型? -
我认为您的意思是值类型(容器中元素的类型),而不是分配器类型(要复杂得多)。在这种情况下,使用您拥有 T2 的
typename T::value_type可能会起作用。 -
Corrected 你的标题以防止混淆。