Easystatic-assert

Что такое static_assert?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

`static_assert(condition, message)` — assertion на этапе компиляции. Если conditionfalse, компиляция останавливается с сообщением. С 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 подскажет развёрнутый ответ в реальном времени.