intermediate

Nifty Fold Expression Tricks--Jonathan Müller

Many things can be done!

Nifty Fold Expression Tricks

by Jonathan Müller

From the article:

Suppose you need to have a variadic function and want to add all arguments together. Before C++17, you need two pseudo-recursive functions:

template <typename H, typename ... T>
auto add(H head, T... tail)
{
    return head + add(tail...);
}

template <typename H>
auto add(H head)
{
    return head;
}

However, C++17 added fold expressions, making it a one-liner:

template <typename H, typename ... T>
auto add(H head, T... tail)
{
    return (head + ... + tail);
    // expands to: head + tail[0] + tail[1] + ...
}

If we’re willing to abuse operator evaluation rules and fold expressions, we can do a lot more. This blog posts collects useful tricks...

Announcing Meeting C++ 2020!

Today I have the honor to give the kick-off for the official planning and participation in Meeting C++2020:

Announcing Meeting C++ 2020

by Jens Weller

From the article:

Meeting C++ returns with its 2020 conference edition! Like in the previous years, we'll be meeting in Berlin from the 12. - 14th November!

With the current situation of COVID-19, planning events for this year is difficult, though I have decided to go ahead and start the preparations for Meeting C++ 2020! I will keep you posted through out 2020 on the changes for this years conference!

How to Short-Circuit a Sequence of Operations with a Boolean Value--Jonathan Boccara

Boolean and bit operators are not the same.

How to Short-Circuit a Sequence of Operations with a Boolean Value

by Jonathan Boccara

From the article:

Interrupting a sequence of operations when one of them fails is a common problem in computer programming. There are plenty of elaborate ways to code that, ranging from exceptions to monads to static exceptions.

One of the techniques to stop such a sequence of operations that is not so sophisticated, but that can be found in existing code, is to use a boolean. This relies on each step producing a boolean flag to indicate if it succeeded or failed, and to stop executing steps at the first failure.

However, simple as it is, this technique can lead to code that doesn’t do with it looks like...