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

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

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

Синтаксис

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

Пример

Давайте проверим, что размер типа int равен 4 байтам. Если это так, программа скомпилируется без ошибок:

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

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

"OK"

Пример

Давайте намеренно зададим ложное условие и посмотрим, как компилятор отреагирует на это:

#include <iostream> using namespace std; static_assert(sizeof(int) == 8, "int must be 8 bytes"); int main() { 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(1, 2) << endl; return 0; }

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

3

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

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