static_assert¶
static_assert - способ удостовериться в истинности какого-либо условия во время компиляции.
Данный оператор состоит из ключевого слова static_assert и constexpr выражения в () скобках после него.
Выражение должно иметь тип bool. Если выражение равно false, компилятор породит ошибку.
fn Foo()
{
    static_assert( 75 / 3 == 25 ); // Ок, выражение истинно
    static_assert( 0.0f != 0.0f ); // Выражение ложно - будет порождена ошибка
}
static_assert можно размещать внутри тел функций, внутри структур и классов, внутри пространств имён.
static_assert( true ); // В корневом пространстве имён
namespace N
{
    static_assert( 1 + 2 == 3 ); // В пространстве имён
}
struct S
{
    static_assert( typeinfo</i32/>.size_of == 4s ); // В структуре
}
fn Foo()
{
    static_assert( 8u % 3u == 2u ); // В функции
}
Также существует static_assert с сообщением, которое указывается через запятую после выражения-условия.
В случае ложности условия компилятор выведет это сообщение как ошибку.
static_assert( false, "es tut mir leid" );
Компилятор выдаст ошибку примерно следующего содержания:
error: Static assertion failed: Es tut mir leid.
