Into the Extreme – Fold-Expressions -- Coral Kashri
Fold expressions exist in C++ since C++17 and significantly affect how we treat variadic templates. Back in the day, I wrote about fold-expressions as part of the metaprogramming series, but today we will explore the extreme cases of fold-expression usages.
Into the Extreme – Fold-Expressions
by Coral Kashri
From the article:
In the case of a unary fold (fold expression without initialization), this case is legal for 3 types of operators:
&&
,||
, and,
.Operator &&
template <typename ...Args> auto and_cond(Args... args) { return (args && ...); }In case of empty parameters (for the call
and_cond()
), the function will returntrue
. A reasonable explanation for this decision might be that&&
operator requires there won’t be any part that evaluatesfalse
. In this case, there are no parts at all, so none of the parts evaluatesfalse
, and therefore the result should be...