標識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
相關用法
- C++ log()用法及代碼示例
- C++ div()用法及代碼示例
- C++ fma()用法及代碼示例
- C++ imag()用法及代碼示例
- C++ wcsncpy()用法及代碼示例
- C++ wcstok()用法及代碼示例
- C++ map key_comp()用法及代碼示例
- C++ wmemmove()用法及代碼示例
- C++ wcsstr()用法及代碼示例
- C++ map rbegin()用法及代碼示例
注:本文由純淨天空篩選整理自 is_trivial function in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。