Easystatic-assert
Что такое static_assert?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
`static_assert(condition, message)` — assertion на этапе компиляции. Если condition — false, компиляция останавливается с сообщением. С C++17 сообщение можно опускать.
// Проверка assumptions о платформе
static_assert(sizeof(int) == 4, "32-bit int required");
static_assert(sizeof(T) <= 16); // C++17 без сообщения
// Инварианты шаблонов
template<typename T>
constexpr T abs(T x) {
static_assert(std::is_arithmetic_v<T>, "T must be arithmetic");
return x < 0 ? -x : x;
}Не заменяет runtime-проверки. С concepts (C++20) многие случаи переписываются чище: template<std::arithmetic T> T abs(T x);.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.