C++中std::conditional的使用說明
更新時間:2022年07月11日 14:46:40 作者:年年年年年
這篇文章主要介紹了C++中std::conditional的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
std::conditional的使用
今天在項目中發(fā)現(xiàn)C++11新特性中的std::conditional關鍵詞,經(jīng)過查詢資料,學習到了其中含義。
具體用法
std::conditional<表達式, 類型1, 類型2>
具體理解為
如果表達式為真則定義的變量為類型1,如果表達式為假則定義的變量為類型2。
如:
typedef typename std::conditional<true, int, double>::type Type1;// => int Type1
則Type1的類型為int類型
以下顯示了更多的例子
#include <iostream> #include <type_traits> #include <typeinfo> int main() { typedef typename std::conditional<true, int, double>::type Type1; typedef typename std::conditional<false, int, double>::type Type2; typedef typename std::conditional<sizeof(int) == sizeof(double), int, double>::type Type3; std::cout << typeid(Type1).name() << std::endl; // 輸出:i (代表int類型) std::cout << typeid(Type2).name() << std::endl; // 輸出:d (代表double類型) std::cout << typeid(Type3).name() << std::endl; // 輸出:d (代表double類型) Type1 a = 3.1; // 由于Type1的類型為int所以3.1被強制轉換為3 Type2 b = 4.2; // Type2的類型為double,4.2保存在變量b中 std::cout << a + b << std::endl; // 3+4.2,最終輸出為7.2 }
利用std::conditional實現(xiàn)變量的多類型
//std::conditional<bool, A, B>::type const bool kEnableOffsetRender = false; class LoginDialog : public std::conditional<kEnableOffsetRender, ui::WindowImplBase, nim_comp::ShadowWndBase>::type { public: //todo }; /* if(kEnableOffsetRender) { type = ui::WindowImpBase; } else { type = nim_comp::ShadowWndBase; } */
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
C語言 深入解讀數(shù)據(jù)結構之堆的實現(xiàn)
堆就是用數(shù)組實現(xiàn)的二叉樹,所以它沒有使用父指針或者子指針。堆根據(jù)“堆屬性”來排序,“堆屬性”決定了樹中節(jié)點的位置2021-11-11linux根據(jù)pid獲取進程名和獲取進程pid(c語言獲取pid)
status文件,第一行的Name即為進程名,C程序實現(xiàn)根據(jù)PID獲取進程名和根據(jù)進程名獲取PID,大家參考使用吧2013-12-12