<type_traits>

类模板
<type_traits>

std::is_compound

template <class T> struct is_compound;
Is compound type

Trait class that identifies whether T is a compound type.

它继承自 integral_constant,并根据Tis a compound type (i.e., not a fundamental type).

这是一个复合类型特征,其行为与以下代码相同:
1
2
template<class T>
struct is_compound : std::integral_constant <bool,!is_fundamental<T>::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
14
// is_compound example
#include <iostream>
#include <type_traits>

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

输出
is_compound:
long int: false
float: false
float*: true
float&: true
decltype(nullptr): false


另见