- 作者: 雪山肥魚
- 時間:20220226 21:22
- 目的: conditional
C++ 11 引入的類模板湿颅,表示一種編譯期的分支邏輯
template<bool b, class T, class U>
struct myConditional {
using type = T;
};
template <class T, class U>
struct myConditional<false, T, U> {
using Type = U;
};
int main(int argc, char ** argv) {
return 0;
}
bool 值為 true, 則 type 類型為T繁扎, 否則為U.
#include <iostream>
using namespace std;
int main(int argc, char ** argv) {
std::conditional<true, int, double>::type tmp1;
std::conditional<false, int, double>::type tmp2;
cout << "tmp1:" << typeid(decltype(tmp1)).name() << endl;//int
cout << "tmp2:" << typeid(decltype(tmp2)).name() << endl;//double
return 0;
}
舉例:
需求,定義一個 名字教 tgvar的變量糊闽,根據(jù)常量的值不同锻离。其類型也就不同。
constexpr int j = 135; //假設(shè)給進(jìn)去35
std::conditional<
(j > 100), double, //值>100墓怀,tsvar是double,
std::conditional<
(j > 80), float, //值在80-100之間卫键,那么tsvar是float類型傀履。
std::conditional<
(j > 40), int, //值在40-80之間,那么tsvar是int類型莉炉。
char //值不超過40钓账,tsvar是char類型
>::type
> ::type
>::type tsvar;
cout << "tsvar的類型為:" << typeid(decltype(tsvar)).name() << endl;
return 0;