Fold Expressions in C++
Hi folks! In this tutorial, we are going to learn and implement Fold Expressions in C++. So let us understand first what are fold expressions.
Fold Expressions
This is a new feature in the C++ 17 compiler. It usually allows a user to apply the same set of binary operations to all the arguments. It works in the sequence of the first 2 arguments, then to the third, and so on…
For example:
(...<bin_operation>args)
Compiler will predict this and and give
(args <bin_operation>args2)
<bin_operation>args3)
<bin_operation>args4) …… and so on.
C++ Source Code: Fold Expressions
Lets have a look at the example of a basic fold expression by taking sum as the list of arguments:
Read the comments in the code for better understanding.
#include <iostream> //main header file using namespace std; //for namespace std template<typename ... T> //put templates void sum(T ... vals) { cout << "MERGED = " << (... + vals) << endl;; //output } int main() { sum(9); //=(9) sum(9, 10); //=(9+10) sum(9, 10, 11); //=((9+10)+11) sum(9, 10, 11, 12); //(((9+10)+11)+12) cout << endl; sum(1.1); sum(1.1, 1.2); sum(1.1, 1.2, 1.3); sum(1.1, 1.2, 1.3, 1.4); cout << endl; sum(std::string("A")); sum(std::string("Brown"), std::string("Dog")); sum(std::string("Jumps"), std::string("over"), std::string("a")); sum(std::string("A"), std::string("Brown"), std::string("Dog"), std::string("Jumps")); return 0; }
Output:
MERGED = 9 MERGED = 19 MERGED = 30 MERGED = 42 MERGED = 1.1 MERGED = 2.3 MERGED = 3.6 MERGED = 5 MERGED = A MERGED = BrownDog MERGED = Jumpsovera MERGED = ABrownDogJumps
Algorithm:
- Include header file.
- Template Typename argument is inserted.
- Add void sum value i.e. what we want to do in the templates in this case sum.
- Insert sum arguments in form of natural numbers in the first case.
- Insert sum arguments in form of decimal numbers in the second case.
- Insert sum arguments in form of words or alphabets in the third case.
- Output of the program will be obtained as sum of the fold expression in each case. Like 9=9 , ( 9,10 ) = 19 ,((9,10))+11), (((9+10)+11)+12)))
Note:
Fold expressions are available in C++ 17 compiler.
Fold expressions are always written in “()” brackets.
Leave a Reply