constexpr if 的示例
时间: 2023-07-14 11:02:02 浏览: 107
当C++14引入constexpr if语句后,我们可以在编译时根据条件来选择不同的代码路径。以下是一个简单的示例:
```cpp
#include <iostream>
template <typename T>
void printType(T value) {
if constexpr (std::is_integral<T>::value) {
std::cout << "Integral type" << std::endl;
} else if constexpr (std::is_floating_point<T>::value) {
std::cout << "Floating point type" << std::endl;
} else {
std::cout << "Other type" << std::endl;
}
}
int main() {
printType(5); // Output: Integral type
printType(3.14); // Output: Floating point type
printType("hello"); // Output: Other type
return 0;
}
```
在这个示例中,我们定义了一个泛型函数`printType`,它接受一个参数`value`并根据`value`的类型在编译时选择不同的代码路径。
使用`if constexpr`语句,我们首先检查`T`是否为整数类型,如果是,则打印"Integral type";然后检查`T`是否为浮点数类型,如果是,则打印"Floating point type";最后,如果`T`既不是整数类型也不是浮点数类型,则打印"Other type"。
在`main`函数中,我们调用了`printType`函数,并分别传递了整数、浮点数和字符串作为参数,根据参数的类型,相应的代码路径会在编译时被选择,并输出相应的结果。
这个示例展示了如何使用constexpr if语句来在编译时进行条件判断,从而选择不同的代码路径。这可以在一定程度上提高代码的效率和灵活性。
阅读全文