2013-09-15 8 views
0

Как сравнить, если два объекта функции имеют одну и ту же функцию?Как сравнить объекты функции

struct A { 
    void b(){} 
} 
int main() { 
    A a; 
    auto f1 = std::bind(&A::b, a); 
    auto f2 = std::bind(&A::b, a); 

    f1 == f2 // ??? 
} 
+0

Какую ошибку вы получаете от этого? –

+0

Вы можете в определенной степени сравнить объекты 'std :: function' (через' function :: target'). Однако это не работает переносимо для 'std :: bind'-expression, так как их тип определяется реализацией. – dyp

ответ

1

Результат std::bind гарантирует только быть отозваны и иметь тип элемента result_type. Нет стандартного способа сопоставления связанных функций.

Возвращаемое значение

Функция объект неопределенного типа Т, для которых станд :: is_bind_expression :: значение == верно, и которые могут быть сохранены в станд :: функции. Объект является подвижным, если f и все args являются подвижными, и могут быть скопированы в противном случае. Тип определяет следующие элементы:

из http://en.cppreference.com/w/cpp/utility/functional/bind

Смежные вопросы