Questo pezzo di codice non riesce a compilare e non so se è perché non può essere fatto, lambda non ereditano da binary_function, o è solo che sto ricevendo la sintassi sbagliataÈ possibile utilizzare il curry con le funzioni lambda?
#include <functional>
int main(int argc, const char *argv[])
{
auto lambda = [](int x, int y) -> int { return x + y; };
auto sumFive = std::bind1st(lambda, 5);
return 0;
}
Correzione minore: lambda non ha nulla a che fare con l'implementazione di 'std :: bind' e' 'std :: function'' - ei modelli variadici semplificano/funzionano per un numero infinito di parametri. – ltjax
@Itjax: Sì, grazie. Stavo ammassando un paio di cose insieme lì. Il fatto è che in C++ 11 puoi legare liberamente qualsiasi cosa, in particolare lambda. L'altra cosa credo sia che 'std :: function' sia necessario come tipo di destinatario per lambda, il cui tipo effettivo non è noto. –
È molto strano avere un tipo che non può essere nominato. – Omnifarious