C++17 and C++20 introduced several new features and improvements to the C++
language, including new forms of the if statement.

One new form of the if statement in C++17 is the if constexpr statement. This 
allows the compiler to perform compile-time evaluation of the condition in the
if statement, and only instantiate the code inside the if block if the condition
is true. This can improve performance and reduce code size.

For example, the following code demonstrates the use of if constexpr to choose
between two different implementations of a function based on the type of its
argument:

Copy code
template<typename T>
void foo(T x) {
    if constexpr(std::is_same_v<T, int>) {
        // Do something with int x
    } else if constexpr(std::is_same_v<T, float>) {
        // Do something with float x
    } else {
        // Do something else
    }
}

Another new form of the if statement in C++20 is the if init-statement. This 
allows you to declare and initialize a variable inside the condition of an if 
statement, without having to repeat the variable's type and name in the if
statement and in the code block.

For example, the following code demonstrates the use of if init-statement to check
if a given integer is even or odd:

Copy code
int x;
std::cin >> x;
if (auto rem = x % 2; rem == 0) {
    std::cout << x << " is even" << std::endl;
} else {
    std::cout << x << " is odd" << std::endl;
}

It's worth noting that both if constexpr and if init-statement are powerful tool 
that make the code more readable and expressive, but it's important to use them 
judiciously and make sure they are not overused, as they can make the code harder
to understand and reason about in some cases.

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: