<type_traits>

类模板
<type_traits>

std::is_fundamental

template <class T> struct is_fundamental;
Is fundamental type

Trait class that identifies whether T is a fundamental type.

它继承自 integral_constant,并根据Tis one of the following types

基本算术类型
整数类型bool
char
char16_t
char32_t
wchar_t
signed char
short int
int
long int
long long int
unsigned char
unsigned short int
unsigned int
unsigned long int
unsigned long long int
浮点类型float
double
long double
voidvoid
null pointerstd::nullptr_t

All fundamental types, along with all their aliases (like those in cstdint), are considered fundamental types by this class, including their const and volatile qualified variants.

Enums, along with pointers, references, classes and functions are not considered fundamental types in C++.

这是一个复合类型特征,其行为与以下代码相同:
1
2
3
4
template<class T>
struct is_fundamental : std::integral_constant < bool,
         is_integral<T>::value || is_floating_point<T>::value || is_void<T>:: value ||
         is_same<nullptr_t, typename remove_cv<T>::type>::value> {};

模板参数

T
一个类型。

成员类型

Inherited from integral_constant
成员类型定义
value_typebool
类型true_type 或 false_type

成员常量

Inherited from integral_constant
成员常量定义
trueorfalse

成员函数

Inherited from integral_constant

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
// is_fundamental example
#include <iostream>
#include <type_traits>

int main() {
  std::cout << std::boolalpha;
  std::cout << "is_fundamental:" << std::endl;
  std::cout << "unsigned: " << std::is_fundamental<unsigned>::value << std::endl;
  std::cout << "float: " << std::is_fundamental<float>::value << std::endl;
  std::cout << "float*: " << std::is_fundamental<float*>::value << std::endl;
  std::cout << "decltype(nullptr): " << std::is_fundamental<decltype(nullptr)>::value << std::endl;
  return 0;
}

输出
is_fundamental:
unsigned: true
float: true
float*: false
decltype(nullptr): true


另见