Завершено
2
03.09.2019, 15:42
11.11.2019, 03:31
С помощью метапрограммирования и шаблонов C++ самостоятельно реализовать функцию STATIC_ASSERT
производящую проверку условия на этапе компиляции.
Классическая функция assert
производит проверку условия во время выполнения программы, и, если условие не верное, прерывает выполнение программы и выводит диагностическое сообщение.
В отличии от неё функция STATIC_ASSERT
производит проверку условия ещё на этапе компиляции, и, если условие не выполняется, прерывает процесс компиляции с ошибкой.
STATIC_ASSERT(sizeof(int) == 4); // должно компилироваться всегда
struct Test
{
char a; // sizeof(a) = 1
double b; // sizeof(b) = 8
}
STATIC_ASSERT(sizeof(Test) == (sizeof(a) + sizeof(b))); // вряд ли скомпилируется