(English) I was recently challenged to make a simple program that does the following:
Function f accepts as a parameter a function g, which returns a value. Function f must return a function h which returns and prints the value that function g returns.
After some research I got the solution and the program was successful, but I wonder if the code is done in the best way. I would appreciate immensely a critique.
This is the code:
Hace poco me retaron a realizar un programa sencillo que realiza lo siguiente:
La función f acepta como parámetro una función g, la cual regresa un valor. La función f debe de regresar una función h la cual regresa e imprime el valor que regresa la función g.
Luego de investigar un poco conseguí la solución y el programa resulto exitoso, pero me pregunto si el código esta hecho de la mejor manera. Agradecería inmensamente una critica.
Este es el código:
#include <iostream>
using namespace std;
auto g() // Función que regresara el valor principal
{
return 123;
}
template <class FT>
auto f(FT* fref) // Función que recibira una referencia de una función
{
return [=]() -> auto // Regresa una función creada a partir de "fref"
{
cout << fref() << endl;
return fref();
};
}
int main()
{
auto h = f(&g); // Llamando la función f pasando la referencia de la función g
auto resultado = h();
cout << resultado << endl;
return 0;
}
f
, what if the return object of the inputfref
without operator<< overloading? Could you describe what kind of particular purpose for using functionf
? Please give an explanation of what these code does. The more detail, the better. \$\endgroup\$