Logo
Section 1 / 3

简介

类型特性库有助于我们优化代码。本节将深入讲解该库的使用。

导入

简介

类型特性库有助于我们优化代码。本节将深入讲解该库的使用。

type traits 库 使你能够在编译期检查、比较和修改类型,因此不会对程序的运行时性能造成任何开销。使用 type traits 库有两个主要原因:优化和正确性。优化,是因为 type traits 库的类型自省能力使得自动选择更高效的代码成为可能;正确性,是因为你可以为代码指定类型要求,并在编译期进行检查。

🔑 type traits 库与 static_assert 是一对强大的组合

type traits 库与 static_assert 函数构成了一对强大的工具。一方面,type traits 库中的模板提供了编译期的类型信息;另一方面,static_assert 在编译期验证这些信息。所有这些操作对程序的运行时完全透明:

1#include <type_traits> 2template <typename T> T fac(T a){ 3 static_assert(std::is_integral<T>::value, "T not integral"); 4 //... 5} 6fac(10); 7fac(10.1); // 此处 T 为 double,不满足整型要求

GCC 编译器会拒绝 fac(10.1) 的调用,在编译时报错提示:T 的类型为 double,不是整型。

现在你已经了解了 type traits 库的重要性,接下来我们学习如何使用它。

智能指针

检查类型信息