温馨提示×

c++ static_assert对类型检查

c++
小樊
82
2024-11-25 05:38:32
栏目: 编程语言

static_assert 是 C++11 引入的一个关键字,用于在编译时进行类型检查。它允许开发者在代码中定义一个编译时的断言,当断言的条件不满足时,编译器会报错并终止编译。这有助于在编写代码时发现潜在的类型错误或其他问题。

使用 static_assert 的基本语法如下:

static_assert(常量表达式, "错误信息");

其中,常量表达式 是一个返回布尔值的表达式,如果表达式的结果为 false,则触发编译错误。错误信息 是一个可选的字符串,用于描述导致编译错误的原因。

下面是一个简单的示例,展示了如何使用 static_assert 进行类型检查:

#include <iostream>
#include <type_traits>

template <typename T>
void print_type() {
    static_assert(std::is_integral<T>::value || std::is_floating_point<T>::value,
                  "print_type() 只接受整数或浮点类型");

    std::cout << "类型是: " << typeid(T).name() << std::endl;
}

int main() {
    print_type<int>(); // 正确:int 是整数类型
    // print_type<std::string>(); // 错误:std::string 不是整数或浮点类型
    return 0;
}

在这个示例中,我们定义了一个模板函数 print_type(),它接受一个类型参数 T。在函数内部,我们使用 static_assert 检查 T 是否为整数或浮点类型。如果不是,编译器会报错并显示提供的错误信息。

0