在C++中,constexpr关键字用于声明可在编译时求值的常量表达式。下面是一些constexpr的应用场景:
constexpr int factorial(int n) {
return (n <= 1) ? 1 : (n * factorial(n - 1));
}
constexpr int fib(int n) {
return (n <= 1) ? n : (fib(n - 1) + fib(n - 2));
}
int main() {
constexpr int fact5 = factorial(5);
constexpr int fib10 = fib(10);
return 0;
}
constexpr int size = 10;
int array[size];
template <int Size>
struct Array {
int data[Size];
};
int main() {
Array<10> arr;
return 0;
}
enum class Color {
RED = 0,
GREEN = 1,
BLUE = 2,
};
constexpr Color mix(Color c1, Color c2) {
return static_cast<Color>(static_cast<int>(c1) | static_cast<int>(c2));
}
int main() {
constexpr Color c = mix(Color::RED, Color::BLUE);
return 0;
}
constexpr int square(int n) {
return n * n;
}
constexpr int result = square(5);
这些只是constexpr的一些应用场景,它可以在许多其他情况下使用,以提高性能或增加代码的可读性和可维护性。