📅  最后修改于: 2023-12-03 14:59:50.927000             🧑  作者: Mango
在 C++ 中,可以使用 std::is_floating_point
模板来判断一个数据类型是否为浮点类型。这个模板定义在 <type_traits>
头文件中。
#include <type_traits>
template <typename T>
struct is_floating_point;
std::is_floating_point
模板接受一个类型参数 T
,如果 T
是浮点类型,则 std::is_floating_point<T>::value
为 true
;否则为 false
。
static_assert(std::is_floating_point<double>::value == true);
static_assert(std::is_floating_point<int>::value == false);
上面的代码中,第一个 static_assert
的断言为真,因为 double
是浮点类型;第二个 static_assert
的断言为假,因为 int
不是浮点类型。
std::is_floating_point
实际上对于所有的浮点类型都返回 true
,包括 float
、double
、long double
和其它实现定义的浮点类型。
std::is_floating_point
在泛型编程中很有用,可以用来在模板中根据类型的特征来选择不同的实现方式。
除了 std::is_floating_point
之外,<type_traits>
头文件中还定义了很多类型特征模板,如 std::is_integral
、std::is_pointer
、std::is_function
等等,这些模板可以帮助我们更方便地完成元编程任务。