Mediumconstexpr
Что такое constexpr-функция?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
constexpr-функция может вычисляться во время компиляции, если все её аргументы — константные выражения. Но может вызываться и в runtime — в зависимости от контекста.
constexpr int factorial(int n) {
int result = 1;
for (int i = 2; i <= n; ++i) result *= i; // C++14+: циклы OK
return result;
}
static_assert(factorial(5) == 120); // compile-time
int n = std::atoi("5");
int r = factorial(n); // runtime — тоже OK- С C++14: локальные переменные, if, циклы, несколько return;
- С C++20: constexpr-строки/векторы (с условностями);
- Применяется для static_assert, шаблонных параметров, размера массивов.
consteval (C++20) — строго только compile-time.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.