Qualcosa di simile a quanto segue:Posso definire un puntatore a funzione che punta a un oggetto di tipo std :: function?
#include <functional>
int main()
{
std::function<int(int)> func = [](int x){return x;};
int* Fptr(int) = &func; //error
}
Gli errori che ricevo sono
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
un modo più diretto per andare da funzione lambda a funzionare puntatore sarebbe utile sapere come bene.
Avete bisogno di std: : funzione o stai solo cercando di ottenere un puntatore a un lambda (senza cattura)? – Mat
No. I puntatori funzione puntano a funzioni, non oggetti che si comportano come funzioni. – Galik
@ Mat originariamente ero interessato al lambda senza cattura. Non sono sicuro che le funzioni lambda si comporterebbero come un rvalue rendendo i puntatori impossibili. – roro