2012-10-20 14 views
8

Jeśli mam dwa std::function s, w jaki sposób mogę sprawdzić, czy oba mają tę samą funkcję, czy nie?Sprawdź, czy dwie funkcje std :: są równe

Informacje dodatkowe: Mam wektor funkcji std::vector<std::function<void()>> i przed dodaniem innej funkcji do wektora chcę sprawdzić, czy już jest on zawarty.

+0

Lambda może być dokładnie równoważna, ale ponieważ nie ma operatora ==, nie można ich porównać. Lepiej jest używać unique_ptr –

+0

Używanie unique_ptr, jak to możliwe, że obsługuje funkcje? – danijar

+0

Wygląda to na duplikat: https://stackoverflow.com/questions/3629835/why-is-stdfunction-not-equality-comparable –

Odpowiedz

4

Nie sądzę, że można je porównać. Oto example wyjaśnić kilka punktów w porównaniu std :: function

-1

Ogólnie std::function i boost::function nie są porównywalne, ponieważ muszą przechowywać ich przedmiot jest porównywalna, ale nie wszystkie obiekty funkcyjne, a także lambdas mieć operator== tak std lub boost funkcje nie mają sposób ich porównania

Powiązane problemy