深入理解C++ 模板<五> 非类型模板参数

发布时间:2026/9/4 13:13:25
深入理解C++ 模板<五> 非类型模板参数 非类型模板参数Non-type Template Parameter是C模板编程中的一个重要概念。简单来说它允许你将一个常量值而不是一个类型作为参数传递给模板。什么是非类型模板参数通常情况下我们使用typename或class来定义类型模板参数例如vectorint中的int。而非类型模板参数则是在编译期就能确定的常量值如整数、枚举、指针或引用等。你可以把它理解为模板内部的一个编译期常量用来定制模板的行为。支持的类型非类型模板参数能使用的类型在不同C标准下有区别C11及之前主要支持整型常量如int、size_t、char、bool等和枚举类型。float、double等浮点数是不被允许的。C20及之后标准进一步放宽开始支持浮点类型、字面量类类型等。#include iostream // 非类型模板参数 N 表示要循环打印的次数编译期常量 template int N void repeatMessage() { for (int i 0; i N; i) { std::cout Hello, 这是第 i 1 次打印 std::endl; } } int main() { std::cout --- 打印 3 次 --- std::endl; repeatMessage3(); // 编译时确定 N 3 std::cout \n--- 打印 2 次 --- std::endl; repeatMessage2(); // 编译时确定 N 2 return 0; }