当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ is_trivial用法及代码示例


std::is_trivial函数用于检查给定类型 T 是否为平凡类。它是在中声明的模板<type_traits>头文件。

C++ 中的平凡类是什么?

普通类类型是一种存储是连续的(普通可复制)并且仅支持静态默认初始化(普通默认可构造)的类型,cv-qualified 或不支持。它包括标量类型、普通类以及任何此类类型的数组。普通类是一个类(用类、结构体或联合定义),它既是普通默认构造的,又是普通可复制的,这意味着:

  • 它使用隐式定义的默认值、复制和移动构造函数、复制和移动赋值以及析构函数。
  • 它没有虚拟成员。
  • 它没有带大括号或等号初始值设定项的非静态数据成员。
  • 它的基类和非静态数据成员(如果有)本身也是普通类型。

is_trivial声明

template< class T >
struct is_trivial;

参数

  • T:我们要检查的类型是不是普通类型类。

返回类型

要检查 T 是否是普通类型,我们使用 std::is_trivial::value 成员:

  • 如果该类是简单类型,则确实如此。
  • 否则为假。

Note: is_trivial inherits from integral_constant as being either true_type or false_type, depending on whether T is a trivial type.

is_trivial 的示例

下面的 C++ 程序说明了如何使用 is_trivial 函数来确定每个类是否平凡。

C++


// CPP program to illustrate is_trivial function 
#include <iostream> 
#include <type_traits> 
using namespace std; 
  
class A { 
}; 
class B { 
    B() {} 
}; 
class C : B { 
}; 
class D { 
    virtual void fn() {} 
}; 
  
// Driver Code 
int main() 
{ 
    cout << boolalpha; 
    // Returns value in boolean type 
    cout << "A: " << is_trivial<A>::value << endl; 
    cout << "B: " << is_trivial<B>::value << endl; 
    cout << "C: " << is_trivial<C>::value << endl; 
    cout << "D: " << is_trivial<D>::value << endl; 
    return 0; 
}
输出
A: true
B: false
C: false
D: false

解释

这里,A 是一个作为参数传递给函数 is_trivial 的类,它将返回一个整数常量类型 bool 的值,即 true 或 false。


相关用法


注:本文由纯净天空筛选整理自佚名大神的英文原创作品 is_trivial in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。