模板无法编译:'double'不是模板常量参数的有效类型

时间:2010-06-24 00:24:17

标签: c++ templates

template<typename T, T Min>
class LowerBoundedType {};
template<typename T> class vectorelement {};
template<> class vectorelement<Categorical> { typedef LowerBoundedType<double, 0.0> type; };

有错误:

 error: 'double' is not a valid type for a template constant parameter

2 个答案:

答案 0 :(得分:10)

对于非类型模板参数有效的唯一数字类型是整数和枚举。因此,您不能拥有double类型的非类型模板参数。

答案 1 :(得分:0)

非类型模板参数只能是以下之一:

  • 整数类型(例如int或long;)
  • 枚举类型
  • 对象的指针或引用
  • 指针或对函数的引用
  • 指向类成员的指针。

因此,它不能是双精度型或类型。 通常,非类型参数的基本原理是允许容器的大小和范围限制。