欢迎您 本站地址:  

C++ 标准库 <type_traits>

<type_traits> 是 C++ 标准库中一个非常有用的头文件,它包含了一组编译时检查类型特性的工具。这些工具可以帮助开发者在编译时确定类型的特性,从而实现更安全、更灵活的代码。

<type_traits> 头文件定义了一组模板,这些模板可以用于查询和操作类型属性。这些属性包括但不限于:

语法

<type_traits> 中的模板通常使用 std:: 前缀,例如 std::is_integral<T>::value 用于检查类型 T 是否是整数类型。这里的 value 是一个静态常量,其值为 truefalse

以下是一些常用的 type_traits 功能:

基本类型判断

类型修饰

类型转换

类型特性检测

条件类型

实例

以下是一些使用 <type_traits> 的实例,以及它们的输出结果。

检查是否是整数类型

实例

#include <iostream>
#include <type_traits>

int main() {
    std::cout << "int is integral: " << std::is_integral<int>::value << std::endl;
    std::cout << "float is integral: " << std::is_integral<float>::value << std::endl;
    std::cout << "char is integral: " << std::is_integral<char>::value << std::endl;
    return 0;
}

输出结果:

int is integral: 1
float is integral: 0
char is integral: 1

检查是否是浮点类型

实例

#include <iostream>
#include <type_traits>

int main() {
    std::cout << "int is floating_point: " << std::is_floating_point<int>::value << std::endl;
    std::cout << "float is floating_point: " << std::is_floating_point<float>::value << std::endl;
    std::cout << "double is floating_point: " << std::is_floating_point<double>::value << std::endl;
    return 0;
}

输出结果:

int is floating_point: 0
float is floating_point: 1
double is floating_point: 1

检查是否是指针类型

实例

#include <iostream>
#include <type_traits>

int main() {
    int a = 10;
    int* p = &a;
    std::cout << "int* is a pointer: " << std::is_pointer<int*>::value << std::endl;
    std::cout << "int is a pointer: " << std::is_pointer<int>::value << std::endl;
    return 0;
}

输出结果:

int* is a pointer: 1
int is a pointer: 0

检查是否是引用类型

实例

#include <iostream>
#include <type_traits>

int main() {
    int a = 10;
    int& ref = a;
    std::cout << "int& is a reference: " << std::is_reference<int&>::value << std::endl;
    std::cout << "int is a reference: " << std::is_reference<int>::value << std::endl;
    return 0;
}

输出结果:

int& is a reference: 1
int is a reference: 0

检查是否是可调用的

实例

#include <iostream>
#include <type_traits>
#include <functional>

void func() {}

int main() {
    std::cout << "int is callable: " << std::is_callable<int>::value << std::endl;
    std::cout << "void() is callable: " << std::is_callable<void()>::value << std::endl;
    std::cout << "func is callable: " << std::is_callable<decltype(func)>::value << std::endl;
    return 0;
}

输出结果:

int is callable: 0
void() is callable: 1
func is callable: 1

<type_traits> 是 C++ 中一个非常有用的工具,它允许开发者在编译时检查和操作类型属性。这不仅可以提高代码的安全性,还可以使代码更加灵活和可重用。

小库提示

扫描下方二维码,访问手机版。