std::conditional_t 用法
时间: 2023-06-13 08:08:21 浏览: 216
`std::conditional_t` 是一个 C++ 模板元编程工具,它可以根据一个布尔值来选择两个类型中的一个,并返回所选类型的别名。其语法如下:
```cpp
template <bool B, typename T, typename F>
using conditional_t = typename std::conditional<B, T, F>::type;
```
其中,`B` 为布尔值,`T` 和 `F` 分别为两个待选类型。如果 `B` 为真,则 `conditional_t` 的返回类型为 `T`,否则为 `F`。
使用 `conditional_t` 可以实现一些编译期的条件分支,例如:
```cpp
#include <iostream>
#include <type_traits>
template<typename T>
void printValue(T val) {
if constexpr (std::is_same_v<T, int>) {
std::cout << "The value is an integer: " << val << std::endl;
} else if constexpr (std::is_same_v<T, double>) {
std::cout << "The value is a double: " << val << std::endl;
} else {
std::cout << "Unknown type!" << std::endl;
}
}
int main() {
printValue(42);
printValue(3.14);
printValue("Hello, world!");
return 0;
}
```
在上面的例子中,`printValue` 函数根据传入的参数类型选择不同的输出方式。如果参数类型为 `int`,则输出一个整数;如果参数类型为 `double`,则输出一个双精度浮点数;否则输出一个错误信息。这里使用了 `std::conditional_t` 来判断参数类型,并使用 `if constexpr` 来在编译期进行条件分支。
阅读全文