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

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

简介

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

  • uses the implicitly defined destructor.
  • the destructor is not virtual.
  • its base class and non-static data members (if any) are themselves also trivially destructible types.

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

类似的类模板还有

  • is_constructible 判断一个类型是不是可以用指定参数集构造的类型
  • is_trivial 判断一个类型是否是一个平凡的类型
  • is_trivially_constructible 判断一个类型是否是可以用指定参数集构造的平凡的可构造类型
  • is_nothrow_destructible 判断一个类型是否是可析构类型,并且不抛出任何异常

参考

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

原文链接: https://www.cnblogs.com/fortunely/p/16216303.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/402626

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月21日 上午11:08
下一篇 2023年4月21日 上午11:08

相关推荐