template
struct remove_const; 移除const
template
struct add_const; 新增const
template
struct remove_reference; 移除引用
template
struct add_lvalue_reference; 新增左值引用
template
struct add_rvalue_reference; 新增右值引用
template
struct remove_extent; 移除陣列頂層的維度
template
struct remove_all_extent; 移除陣列所有的維度
template
struct remove_pointer; 移除指標
template
struct add_pointer; 新增指標
template
struct decay; 移除cv(const volatile)或新增指標
template
struct common_type; 獲取公共型別
使用如下:
cout << is_same::type>::value << endl; //1
cout << is_same::type>::value << endl; //1
cout << is_same::type>::value << endl; //1
cout << is_same::type>::value << endl; //1
cout << is_same::type>::value << endl; //1
cout << is_same::type>::value << endl; //1
typedef common_type::type numbertype;
cout << is_same::value << endl; //1
template
typename remove_cv::type>::type* create()
或template
typename decay::type* create()
int* p = create(); //ok
對於普通型別,decay是移除引用和cv符,除了普通型別,decay還可以用於陣列和函式,具體規則如下:
先移除t型別的引用,得到型別u,u定義為remove_reference::type
如果is_array::value為true,修改型別type為remove_extent::type
否則,如果is_function::value為true,修改型別type為add_pointer::type
否則,修改型別type為remove_cv::type
c 11 常用判斷型別的traits
template struct is void t是否為void型別 template struct is enum t是否為列舉型別 template struct is union t是否為union型別 template struct is class t是否為class struct型別而不...
c 11 型別推斷
當編譯器能夠在乙個變數的宣告時候就推斷出它的型別,那麼你就能夠用auto關鍵字來作為他們的型別 cpp view plain copy auto x 1 編譯器當然知道x是integer型別的。所以你就不用int了。接觸過泛型程式設計或者api程式設計的人大概可以猜出自動型別推斷是做什麼用的了 幫你...
c 11 型別推導
auto與decltype都是在編譯時期進行自動型別的推導 auto name value 1.int x 0 2.auto p1 x p1 為 int auto 推導為 int 3.auto p2 x p2 為 int auto 推導為 int 4.auto r1 x r1 為 int auto ...