c 11 常用判斷型別的traits

2021-10-06 01:26:29 字數 1370 閱讀 4654

template

struct is_void;   t是否為void型別

template

struct is_enum;   t是否為列舉型別

template

struct is_union;   t是否為union型別

template

struct is_class;   t是否為class/struct型別而不是union型別

template

struct is_function;   t是否為函式型別

template

struct is_reference;   t是否為引用型別

template

struct is_arithmetic;   t是否為整型、浮點型別

template

struct is_fundamental;   t是否為整型、浮點、void或nullptr_t型別

template

struct is_object;   t是否為乙個物件型別(不是函式、不是引用、不是void)

template

struct is_scalar;   t是否為arithmetic、enumeration、pointer、pointer to member或nullptr_t型別

template

struct is_compound;   t是否非fundamental型別構造的

template

struct is_member_pointer;   t是否為成員函式指標型別

template

struct is_polymorphic;   t是否有虛函式

template

struct is_abstract;   t是否為抽象類

template

struct is_signed;   t是否是有符號型別

template

struct is_unsigned;   t是否是無符號型別

template

struct is_const;   t是否為const修飾的型別

使用如下:

cout << is_const::value << endl;            //0

cout << is_const::value << endl;            //1

template

struct is_same;   判斷兩個型別是否相同

template

struct is_base_of;   判斷base型別是否為derived型別的基類

template

struct is_convertible;   判斷前面的模板引數型別能否轉換為後面的模板引數型別

c 11常用特性

目錄 一 atomic 1 std atomic flag 2 std atomic 二 std thread 三 std condition variable 四 右值引用 五 std function std bind 六 lambda表示式 atomic flag 一種簡單的原子布林型別,只支...

C 11 新型的型別轉換

include typedef void pf int struct point int main 輸出 無警告,無錯誤 段錯誤c 方式強制型別轉換存在的問題 問題 強制型別轉換在實際工程中是很完全難避免的!如何進行更加安全可靠的轉換呢?static cast const cast dynamic ...

C 11 強型別列舉

c 11引入了一種新的列舉型別,即 列舉類 或 強型別列舉 宣告強型別列舉非常簡單,只需要在enum後加上class或struct即可。例如 enum old 老形式 enum class new 新形式 enum struct new2 新形式傳統的c 列舉型別有一些缺點 如果在相同作用域中的兩個...