【问题标题】:Passing "value type" as default second argument to template将“值类型”作为默认的第二个参数传递给模板
【发布时间】: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 你的标题以防止混淆。

标签: c++ templates


【解决方案1】:

使用容器的value_type:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多