其他分享
首页 > 其他分享> > std::is_trivially_destructible 判断一个类型是否是一个平凡的可销毁类型

std::is_trivially_destructible 判断一个类型是否是一个平凡的可销毁类型

作者:互联网

目录

C++ 11知识点:std::is_trivially_destructible

简介

判断一个类型T是否是一个平凡的可销毁类型(trivivally destructible)。主要用于检查这个类型的析构函数。
一个trivivally destructible类(由class,struct/union)这样定义:

class template声明

#include <type_traits>

template <class T> struct is_trivially_destructible;

is_trivially_destructible 内部继承integral_constant作为true_type或false_type,依赖于T是否是trivivally destructible。

示例

// is_trivially_destructible example
#include <iostream>
#include <type_traits>

struct A { }; /* 符合trivivally destructible类型定义 */
struct B { ~B(){} }; /* 没有使用隐式应答的析构函数, 即编译器合成的默认析构函数, 因此不是trivivally destructible类型 */

int main() {
  std::cout << std::boolalpha; /* 将输出流bool解析为true/false, 而不是1/0 */
  std::cout << "is_trivially_destructible:" << std::endl;
  std::cout << "int: " << std::is_trivially_destructible<int>::value << std::endl; /* 基本类型是trivivally destructible类型 */
  std::cout << "A: " << std::is_trivially_destructible<A>::value << std::endl; /* A是trivivally destructible类型 */
  std::cout << "B: " << std::is_trivially_destructible<B>::value << std::endl; /* B不是trivivally destructible类型 */
  return 0;
}

输出:

is_trivially_destructible:
int: true
A: true
B: false

类似的类模板还有

参考

http://www.cplusplus.com/reference/type_traits/is_trivially_destructible/

标签:std,struct,trivially,是否是,trivivally,destructible,类型
来源: https://www.cnblogs.com/fortunely/p/16216303.html