Etwas wie folgt aus:Kann ich einen Funktionszeiger definieren, der auf ein Objekt vom Typ std :: function zeigt?
#include <functional>
int main()
{
std::function<int(int)> func = [](int x){return x;};
int* Fptr(int) = &func; //error
}
Die Fehler, die ich sind erhalten
temp.cpp: In function ‘int main()’:
temp.cpp:6:15: warning: declaration of ‘int* Fptr(int)’ has ‘extern’ and is initialized
int* Fptr(int) = &func; //error
^
temp.cpp:6:20: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘func’
int* Fptr(int) = &func; //error
^
temp.cpp:6:20: error: function ‘int* Fptr(int)’ is initialized like a variable
Ein direkterer Weg von Lambda-Funktion gehen Zeiger funktionieren würde nützlich sein, als gut zu kennen.
Haben Sie die std benötigen: : Funktion oder versuchen Sie nur einen Funktionszeiger auf ein (Capture-less) Lambda zu bekommen? – Mat
Nein. Funktionszeiger zeigen auf Funktionen, nicht Objekte, die sich wie Funktionen verhalten. – Galik
@Mat Ursprünglich interessierte mich Capture-less Lambda. Ich bin mir nicht sicher, ob sich Lambda-Funktionen wie ein R-Wert verhalten würden, der Zeiger unmöglich macht. – roro