РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
46 of 815 menu

Ключевое слово static_assert

Ключевое слово static_assert выполняет проверку условия во время компиляции. Если условие истинно, компиляция продолжается как обычно. Если условие ложно, компилятор выдаёт ошибку с указанным сообщением. В первом параметре мы передаём проверяемое условие, а во второй - строковый литерал с сообщением об ошибке. Начиная с C++17 второй параметр можно опустить.

Синтаксис

static_assert(condition, "message"); static_assert(condition);

Пример

Давайте проверим, что размер типа int равен 4 байтам:

#include <iostream> using namespace std; int main() { static_assert(sizeof(int) == 4, "int must be 4 bytes"); cout << "OK" << endl; return 0; }

Результат выполнения кода:

"OK"

Пример

Давайте попробуем заведомо ложное условие и увидим ошибку компиляции:

#include <iostream> using namespace std; int main() { static_assert(sizeof(int) == 8, "int must be 8 bytes"); cout << "OK" << endl; return 0; }

Результат выполнения кода (ошибка компиляции):

error: static assertion failed: int must be 8 bytes

Пример

Давайте используем static_assert внутри шаблонной функции для проверки типа:

#include <iostream> #include <type_traits> using namespace std; template <typename T> T add(T a, T b) { static_assert(is_integral<T>::value, "T must be integral"); return a + b; } int main() { cout << add(2, 3) << endl; return 0; }

Результат выполнения кода:

5

Смотрите также

  • ключевое слово constexpr,
    которое вычисляет значение на этапе компиляции
  • ключевое слово consteval,
    которое требует вычисления функции на этапе компиляции
  • оператор sizeof,
    который возвращает размер типа в байтах
  • ключевое слово noexcept,
    которое указывает, что функция не бросает исключения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить