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++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。