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


C++ is_trivial用法及代码示例


标识T是否为平凡类型的特质类。普通类型是一种类型,其存储是连续的(普通可复制),并且仅支持静态默认初始化(普通默认可构造),无论是否支持cv-qualified。它包括标量类型,平凡类和任何此类类型的数组。

琐碎的类是一类(用class,struct或union定义),既可以琐碎默认地构造,又可以琐碎地复制,这意味着:

  • 它使用隐式定义的默认值,复制和移动构造函数,复制和移动分配以及析构函数。
  • 它没有虚拟成员。
  • 它没有带有大括号或相等初始化程序的非静态数据成员。
  • 它的基类和非静态数据成员(如果有的话)本身也是琐碎的类型。

is_trivial从integral_constant继承为true_type或false_type,具体取决于T是否为平凡类型


用法:

template  struct is_trivial;

例:

std::is_trivial::value
Here A is a class which has been passed as a parameter 
to the function is_trivial and it will return a value of
integral constant type bool i.e. either true or false
// CPP program to illustrate  
// is_trivial function 
#include <iostream> 
#include <type_traits> //library containing is_trivial function 
using namespace std; 
class A {}; 
class B { B() {} }; 
class C:B {}; 
class D { virtual void fn() {} }; 
  
int main() { 
  std::cout << std::boolalpha; //Returns value in boolean type 
  std::cout << "A:" << std::is_trivial<A>::value << endl; 
  std::cout << "B:" << std::is_trivial<B>::value << endl; 
  std::cout << "C:" << std::is_trivial<C>::value << endl; 
  std::cout << "D:" << std::is_trivial<D>::value << endl; 
  return 0; 
} 

输出:

A:true
B:false
C:false
D:false


相关用法


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