Sai, siamo in grado di avvolgere o conservare una funzione lambda ad un std::function
:Come std :: funzione opera
#include <iostream>
#include <functional>
int main()
{
std::function<float (float, float)> add = [](float a, float b)
// ^^^^^^^^^^^^^^^^^^^^
{
return a + b;
};
std::cout << add(1, 2) << std::endl;
}
La mia domanda è di circa std::function
, come potete vedere si tratta di un modello di classe, ma può accettare qualsiasi tipo di firma di funzione .
Ad esempio float (float, float)
in questo formato return_value (first_arg, second_arg)
.
Qual è la struttura di std::function
e come accetta una firma di funzione come x(y,z)
e come funziona? float (float, float)
una nuova espressione valida in C++?
Cerca cancellazione di tipo in C++. –
Puoi sempre aprire l'intestazione '' del compilatore (credo che tutti i principali compilatori inviino intestazioni standard come codice C++) e ispezionarlo, o dare un'occhiata a [Boost.Function] (http://www.boost.org/doc /libs/1_53_0/doc/html/function.html). –
Angew
@Angew: Sì, molto istruttivo, +1. Penso che 'std :: function' tocchi praticamente ogni aspetto del linguaggio C++ ... –