在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的一些应用场景,它可以在许多其他情况下使用,以提高性能或增加代码的可读性和可维护性。