📜  C++中的is_trivial函数

📅  最后修改于: 2021-05-30 09:55:13             🧑  作者: Mango

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

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

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

is_trivial继承自integer_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 
#include  //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::value << endl;
  std::cout << "B: " << std::is_trivial::value << endl;
  std::cout << "C: " << std::is_trivial::value << endl;
  std::cout << "D: " << std::is_trivial::value << endl;
  return 0;
} 

输出:

A: true
B: false
C: false
D: false
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”