static(if), static(assert) and Type Traits

The use of static(if) and static(assert) in conditional compilation is explained in this lesson.

We'll cover the following

static if

static if is the compile time equivalent of the if statement.

Just like the if statement, static if takes a logical expression and evaluates it. Unlike the if statement, static if is not about execution flow; rather, it determines whether a piece of code should be included in the program or not.

The logical expression must be evaluable at compile time. If the logical expression evaluates to true, the code inside the static if gets compiled. If the condition is false, the code is not included in the program as if it has never been written. The logical expressions commonly take advantage of the is expression and __ traits.

static if can appear at module scope or inside definitions of struct, class, template, etc. Optionally, there may be else clauses as well.

Let’s use static if with a simple template, making use of the is expression. We will see other examples of static if in the next chapter:

Get hands-on with 1400+ tech skills courses.