Передача параметром указателя на функцию и указателя на функцию-член с экземпляром

Изучая STL заметил удобную фичу, позволяющую, по необходимости, обрабатывать как функцию, так и функцию-член с экземпляром класса, которому принадлежит данная функция, аля:

class A {
public:
    void f() {}
};

int main()
{
    std::once_flag on;
    A a;
    std::call_once(on, &A::f, a);
}

Подскажите, каким образом это реализуемо? Что за механизм? В этом как то замешано std::tuple? Как изменить класс A для возможности использовать такую "перегрузку"? f(&A::f, a); or f(&f);

В стандарт глядел, но не переварил(. Не откажусь от литературы по этому поводу.


Ответы (0 шт):