constexpr if

Let's study constexpr if in this lesson.

We'll cover the following

constexpr if (C++17)

constexpr if enables us to compile source code conditionally.

if constexpr (cond) statement1;
else statement2;
  • The expression cond has to be a constant expression.
  • The unused code has to be valid.
  • Thanks to constexpr if, functions can have different return types.

The following code snippet shows a function, which returns an int or a double.

template <typename T>
auto getAnswer(T t){
  static_assert(std::is_arithmetic_v<T>); // arithmetic
  if constexpr (std::is_integral_v<T>)    // integral
    return 42;
  else                                    
    return 42.0;        // floating point
}

constexpr if is a replacement for tag dispatch and SFINAE. SFINAE stands for Substitution Failure Is Not An Error.

To study further about tag dispatching, click here.


In the next lesson, we’ll look at an example of constexpr if.

Get hands-on with 1400+ tech skills courses.