<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


另見