static_assert
是 C++11 引入的一个关键字,用于在编译时进行断言检查
下面是一个使用 static_assert
的模板示例:
#include#include // 一个简单的模板函数,用于检查类型是否为整数 template void check_is_integer() { // 使用 static_assert 检查类型 T 是否为整数类型 static_assert(std::is_integral ::value, "T must be an integral type"); std::cout << "Type T is an integral type." << std::endl; } int main() { // 使用整数类型调用 check_is_integer 函数 check_is_integer (); // 使用浮点类型调用 check_is_integer 函数,将导致编译时错误 // check_is_integer (); return 0; }
在这个示例中,我们定义了一个名为 check_is_integer
的模板函数,该函数使用 static_assert
检查类型参数 T
是否为整数类型。如果是整数类型,编译器将正常编译并输出 “Type T is an integral type.”。但是,如果我们尝试使用浮点类型(如 double
)调用该函数,编译器将在编译时报错,提示 “T must be an integral type”。