Come si confrontano due funzioni lambda in C++ (Visual Studio 2010)?Operatore lambda C++ ==
std::function<void()> lambda1 = []() {};
std::function<void()> lambda2 = []() {};
bool eq1 = (lambda1 == lambda1);
bool eq2 = (lambda1 != lambda2);
Viene visualizzato un errore di compilazione che afferma che l'operatore == non è accessibile.
MODIFICA: Sto provando a confrontare le istanze di funzione. Quindi lambda1 == lambda1 dovrebbe restituire true, mentre lambda1 == lambda2 dovrebbe restituire false.
Stai cercando di confrontare il risultato della valutazione dei lambda o degli stessi lambda? –
Cosa intendi per ==? Che cosa testate uguali?E se mai lo sapessi, come potrebbe il compilatore sapere da solo e scegliere un operatore == che farebbe ciò che non sai? –
@Joshua: Sta ovviamente cercando di confrontare i lambda stessi. Qual è una cosa perfettamente ragionevole da fare per chiunque provenga da una lingua con oggetto di funzione di prima classe "corretto", in lambda o qualsiasi altra notazione. Sebbene tali lingue possano o no concordare sul fatto che 'labda1' e' lambda2' nel codice precedente siano uguali, quindi Stephane probabilmente ha sottolineato perché C++ 0x ha lasciato fuori 'operator ==' per lambdas. –