std::conditional
时间: 2023-12-27 11:04:05 浏览: 185
`std::conditional`是C++标准库中的一个模板类,用于根据条件选择不同的类型。它接受一个布尔值作为模板参数,如果该布尔值为true,则选择第一个类型作为结果类型,否则选择第二个类型作为结果类型。
以下是`std::conditional`的使用示例:
```cpp
#include <iostream>
#include <type_traits>
int main() {
const int len = 4;
typedef std::conditional<sizeof(short)==len, short,
std::conditional<sizeof(int)==len, int,
std::conditional<sizeof(long)==len, long,
std::conditional<sizeof(long long)==len, long long,
void>::type>::type>::type int_my;
std::cout << sizeof(int_my) << '\n'; // 输出:4
return 0;
}
```
上面的代码根据不同的字节数选择不同的整型类型,并输出所选择的类型的字节数。
另一个稍微复杂一些的例子是:
```cpp
#include <iostream>
#include <type_traits>
constexpr int sign = 10;
void TestCond() {
std::conditional<(sign > 100), double,
std::conditional<(sign > 80), float,
std::conditional<(sign > 40), int, char>::type>::type>::type var;
std::cout << "cur type is:" << typeid(decltype(var)).name() << std::endl;
}
int main() {
TestCond(); // 输出:cur type is: int
return 0;
}
```
上面的代码根据不同的条件选择不同的类型,并输出所选择的类型的名称。
阅读全文