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。
相关用法
- C++ is_trivial用法及代码示例
- C++ is_permutation()用法及代码示例
- C++ is_final用法及代码示例
- C++ is_fundamental用法及代码示例
- C++ is_pod用法及代码示例
- C++ is_pointer用法及代码示例
- C++ is_signed用法及代码示例
- C++ is_unsigned用法及代码示例
- C++ is_void用法及代码示例
- C++ is_standard_layout用法及代码示例
- C++ is_class用法及代码示例
- C++ is_const用法及代码示例
- C++ is_lvalue_reference用法及代码示例
- C++ is_rvalue_reference用法及代码示例
- C++ is_empty用法及代码示例
- C++ is_abstract用法及代码示例
- C++ is_scalar用法及代码示例
- C++ is_arithmetic用法及代码示例
- C++ is_reference用法及代码示例
- C++ is_polymorphic用法及代码示例
- C++ is_volatile用法及代码示例
- C++ isalpha()用法及代码示例
- C++ isblank()用法及代码示例
- C++ iscntrl()用法及代码示例
- C++ isdigit()用法及代码示例
注:本文由纯净天空筛选整理自佚名大神的英文原创作品 is_trivial in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。