这是一个常见的模板函数
template <typename T>
void func(T param) {
// ...
}
但是,我也看到了类似这样的模板:
template <typename T, std::size_t N> // note the extra N
void func(T param) {
// ...
}
我知道这是合法的,但显然 N 与参数的类型无关。在模板中添加额外整数的官方规则是什么?这个叫什么?我可以将额外的模板参数设为 float 或 double 而不是整数吗?如果不是,为什么整数是特殊的?
最佳答案
它叫做 non-type template parameters .您可以使用整数等简单类型
- std::nullptr_t (C++11 起);
- 整体型;
- 左值引用类型(对象或函数);
- 指针类型(指向对象或函数);
- 指向成员类型(指向成员对象或成员函数)的指针;
- 枚举类型。
请注意,从 C++17 开始,您可以使用 auto
来允许推导非类型模板参数。
不允许 float 和 double 。但为什么?!看看Why can't I use float value as a template parameter?
关于c++ - 模板参数中具有特殊整数的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48490283/