2012-10-20 13 views
8

Se ho due std::function s, come posso verificare se entrambi mantengono la stessa funzione o no?Controlla se due std :: function sono uguali

Ulteriori informazioni: Possiedo un vettore di funzioni std::vector<std::function<void()>> e prima di aggiungere un'altra funzione al vettore, desidero controllare se è già presente.

+0

Lambdas può essere esattamente equivalente, ma poiché non hanno un operatore ==, non è possibile confrontarli. Stai meglio usando un unique_ptr –

+0

Usando un unique_ptr come potrebbe gestire le funzioni? – danijar

+0

Questo sembra essere un duplicato di: https://stackoverflow.com/questions/3629835/why-is-stdfunction-not-equality-comparable –

risposta

4

Non penso che entrambi possano essere confrontati. Ecco un example spiegare alcuni punti sul confronto std :: funzione

-1

Generalmente std::function e boost::function non sono comparabili perché hanno bisogno del loro oggetto memorizzato essere paragonabile, ma non tutti gli oggetti di funzione e anche lambda avere operator== così std o boost funzioni sono non modo per confrontarli