當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ is_trivial用法及代碼示例


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。


相關用法


注:本文由純淨天空篩選整理自佚名大神的英文原創作品 is_trivial in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。