Есть ли способ для метода, который получает два функтора в качестве аргументов, чтобы выяснить, указывают ли они на одну и ту же функцию? В частности, имея такую структуру:
struct FSMAction {
void action1() const { std::cout << "Action1 called." << std::endl; }
void action2() const { std::cout << "Action2 called." << std::endl; }
void action3() const { std::cout << "Action3 called." << std::endl; }
private:
// Maybe some object-specific stuff.
};
И такой метод:
bool actionsEqual(
const std::function<void(const FSMAction&)>& action1,
const std::function<void(const FSMAction&)>& action2)
{
// Some code.
}
Есть ли "некоторый код", который вернет true
только для:
actionsEqual(&FSMAction::action1, &FSMAction::action1)
Но не для:
actionsEqual(&FSMAction::action1, &FSMAction::action2)
Может быть, этот вопрос не имеет никакого смысла (первая подсказка будет о том, что в Интернете, похоже, ничего нет ...). Если да, не могли бы вы дать намек, почему, и если есть способы сделать что-то «подобное»? (По сути, я хотел бы иметь набор обратных вызовов только с «уникальными» элементами в описанном выше смысле.)