官术网_书友最值得收藏!

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.
主站蜘蛛池模板: 汉阴县| 墨竹工卡县| 高要市| 济宁市| 济宁市| 城口县| 十堰市| 宜春市| 嘉荫县| 凤台县| 昆山市| 香河县| 古浪县| 平顶山市| 南川市| 长兴县| 藁城市| 麻江县| 郯城县| 彭水| 海晏县| 高要市| 永泰县| 扎鲁特旗| 都兰县| 句容市| 凭祥市| 娄烦县| 黄陵县| 宁河县| 竹溪县| 雅安市| 邯郸市| 柳林县| 丹江口市| 凯里市| 莎车县| 绍兴县| 临沭县| 宜城市| 仁化县|