模板中包含特殊整数的模板

时间:2018-01-28 19:09:36

标签: c++ templates

这是一个常见的模板功能

Content-Length

但是,我也看到了这样的模板:

template <typename T>
void func(T param) {
   // ...
}

我知道这是合法的,但明显的N与参数无关。 。在模板中添加额外整数的官方规则是什么?这个叫什么?我可以将额外的模板参数设置为float或double而不是整数吗?如果没有,为什么整数是特殊的?

1 个答案:

答案 0 :(得分:1)

它被称为non-type template parameters。您可以使用简单类型,如整数

  • std :: nullptr_t(自C ++ 11起);
  • 整数类型;
  • 左值引用类型(对象或函数);
  • 指针类型(对象或函数);
  • 指向成员类型的指针(指向成员对象或成员函数);
  • 枚举类型。

请注意,自C ++ 17起,您可以使用auto来扣除非类型模板参数。

不允许浮动和双打。但为什么?!看看Why can't I use float value as a template parameter?