在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的一些應用場景,它可以在許多其他情況下使用,以提高性能或增加代碼的可讀性和可維護性。