/
Lambda fun
Lambda fun
C++ lambdas give you the ability to create a local member function that can access the values in the enclosing unit.
A simple example
#include <iostream>
using namespace std;
int main()
{
int x = 5;
auto isEmpty = [x](auto val)->auto { std::cout << x << ", " << val << std::endl; return val; };
cout << isEmpty(true) << endl;
}
A lambda can be declared globally
#include <iostream>
using namespace std;
class Point
{
public:
Point(int px, int py) :x(px), y(py) {}
const int& getX() const { return x; }
const int& getY() const { return y; }
private:
int x;
int y;
};
auto isEqual = [](auto &pp)->bool {return pp.getX() == pp.getY(); };
int main()
{
int x = 5;
auto isEmpty = [x](auto val)->auto { std::cout << x << ", " << val << std::endl; return val; };
cout << isEmpty(true) << endl;
}
A lambda cannot be declared as a member variable
#include <iostream>
using namespace std;
class Point
{
public:
Point(int px, int py) :x(px), y(py) {}
const int& getX() const { return x; }
const int& getY() const { return y; }
private:
int x;
int y;
auto isEqual = [](auto &pp)->bool {return pp.getX() == pp.getY(); }; // This line will NOT compile
};
int main()
{
int x = 5;
auto isEmpty = [x](auto val)->auto { std::cout << x << ", " << val << std::endl; return val; };
cout << isEmpty(true) << endl;
Point np{ 4, 7 };
}
Lambdas can be returned from methods
#include <iostream>
using namespace std;
class Point
{
public:
Point(int px, int py) :x(px), y(py) {}
const int& getX() const { return x; }
const int& getY() const { return y; }
auto buildFunctor()
{
return [this]()->bool {return this->getX() == this->getY(); };
}
private:
int x;
int y;
};
auto isEqual = [](auto &pp)->bool {return pp.getX() == pp.getY(); };
int main()
{
int x = 5;
auto isEmpty = [x](auto val)->auto { std::cout << x << ", " << val << std::endl; return val; };
cout << isEmpty(true) << endl;
Point np{ 4, 7 };
auto result = isEqual(np);
cout << result << endl;
auto lf = np.buildFunctor();
cout << lf() << endl;
}
, multiple selections available,
Related content
Constructors
Constructors
More like this
Algorithms
Algorithms
More like this
Javascript
Javascript
More like this
Meta-models and Stereotypes
Meta-models and Stereotypes
More like this
08 - Inheritance - Exercise
08 - Inheritance - Exercise
More like this
function component
function component
More like this