Как сравнить, если два объекта функции имеют одну и ту же функцию?Как сравнить объекты функции
struct A {
void b(){}
}
int main() {
A a;
auto f1 = std::bind(&A::b, a);
auto f2 = std::bind(&A::b, a);
f1 == f2 // ???
}
Как сравнить, если два объекта функции имеют одну и ту же функцию?Как сравнить объекты функции
struct A {
void b(){}
}
int main() {
A a;
auto f1 = std::bind(&A::b, a);
auto f2 = std::bind(&A::b, a);
f1 == f2 // ???
}
Результат std::bind
гарантирует только быть отозваны и иметь тип элемента result_type
. Нет стандартного способа сопоставления связанных функций.
Возвращаемое значение
Функция объект неопределенного типа Т, для которых станд :: is_bind_expression :: значение == верно, и которые могут быть сохранены в станд :: функции. Объект является подвижным, если f и все args являются подвижными, и могут быть скопированы в противном случае. Тип определяет следующие элементы:
Какую ошибку вы получаете от этого? –
Вы можете в определенной степени сравнить объекты 'std :: function' (через' function :: target'). Однако это не работает переносимо для 'std :: bind'-expression, так как их тип определяется реализацией. – dyp