auto lsqr = [](const int &n) -> int { return n*n; };
int (*pointer)(const int&) = lsqr; // OK
int (&refernce)(const int&) = lsqr; // Error
//Normally, perversion
int (&perversion)(const int&) = *(int(*)(const int&)) lsqr;
int n = 5;
const std::function& refernce = std::bind([](const int &n) {return n*n; }, n);
const int& x1 = refernce(); // out: x = 25
Find more questions by tags C++