- Learning C++ Functional Programming
- Wisnu Anggoro
- 299字
- 2021-07-02 20:51:38
Writing a generic Lambda expression to be used many times with many different data types
Before C++14, we have to specifically state the type of the parameter list. Fortunately, now in C++14, Lambda expressions accept auto as a valid parameter type. Therefore, we can now build a generic Lambda expression as demonstrated in the following code. In that code, we have only one Lambda expression to find out which is the greatest value between two numbers passed to the expression. We will use the auto keyword in parameter declaration so it can be passed by any data type. Therefore, the findMax() function parameters can be passed by both the int and float data type. The code should be as follows:
/* lambda_expression_generic.cpp */
#include <iostream>
using namespace std;
auto main() -> int
{
cout << "[lambda_expression_generic.cpp]" << endl;
// Creating a generic lambda expression
auto findMax = [](auto &x, auto &y){
return x > y ? x : y; };
// Initializing various variables
int i1 = 5, i2 = 3;
float f1 = 2.5f, f2 = 2.05f;
// Consuming generic lambda expression
// using integer data type
cout << "i1 = 5, i2 = 3" << endl;
cout << "Max: " << findMax(i1, i2) << endl << endl;
// Consuming generic lambda expression
// using double data type
cout << "f1 = 2.5f, f2 = 2.05f" << endl;
cout << "Max: " << findMax(f1, f2) << endl << endl;
return 0;
}
The output we will see on the console should be as follows:

The C++17 language plans to introduce two new features for the Lambda expression--they are capturing *this, which allows the expression to capture the enclosing object by copy, and the constexpr Lambda expressions, which allows us to use the result of the Lambda expressions and generate constexpr objects at compile time. However, since C++17 has not been released yet, we cannot try it for now.
推薦閱讀
- Delphi程序設計基礎:教程、實驗、習題
- Oracle 11g從入門到精通(第2版) (軟件開發視頻大講堂)
- 垃圾回收的算法與實現
- Mastering Python Scripting for System Administrators
- PostgreSQL Replication(Second Edition)
- Java應用開發技術實例教程
- 硅谷Python工程師面試指南:數據結構、算法與系統設計
- C語言程序設計
- HTML5+CSS3 Web前端開發技術(第2版)
- 深入實踐Kotlin元編程
- 平面設計經典案例教程:CorelDRAW X6
- 單片機原理及應用技術
- IBM Cognos TM1 Developer's Certification guide
- Mastering JavaScript
- Kotlin語言實例精解