c++ - 为什么我们使用非类型模板参数?

标签 c++ templates arguments

我理解这个概念,但我不知道为什么我需要使用非类型模板参数?

最佳答案

有很多用例,所以让我们看一下它们必不可少的几种情况:

  • 固定大小的数组或 matrix类,例如 C++11 std::arrayboost::array .

  • std::begin 的可能实现对于数组,或任何需要固定大小的 C 样式数组大小的代码,例如:

返回数组的大小:

template <typename T, unsigned int N>
unsigned int size(T const (&)[N])
{
  return N;
}

它们在模板元编程中也非常有用。

关于c++ - 为什么我们使用非类型模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550398/

相关文章:

c++ - finally函数依赖RVO

c++ - 如何使模板原型(prototype)继承,以便所有特化都继承相同的类/接口(interface)?

c++ - 模板类和在 C++ 中使用带有混合参数的重载构造函数

c++ - 引入新模板参数的模板类的模板友元函数

python - 如何使用选项运行 python 脚本

c++ - "sum root to leaf numbers"问题的解决方案

c++ - C++ 和 Xcode 中的重复符号错误

c++ - 如何保持 QtreeWidget(多于 2 列)第二列的大小动态?

python - 惯用的 python,管理函数中的默认参数

HASKELL Lambda 表达式 ‘\xs -> ...’ 有一个参数,但它的类型 ‘[t]’ 没有