Вызов через std::invoke в C++
Функция std::invoke из <functional>
единым способом вызывает функции, функторы,
указатели на функцию и указатели на метод.
Для указателя на метод в аргументах передают сам указатель на член и объект, у которого вызывают метод. Подключим заголовок, зададим класс и выполним один вызов:
#include <functional>
#include <iostream>
struct Box {
int size = 0;
void report() {
std::cout << size << "\n";
}
};
int main() {
Box obj{9};
void (Box::*mp)() = &Box::report;
std::invoke(mp, obj);
return 0;
}
В struct Node объявите метод
void tick(), печатающий 1.
Вызовите его через std::invoke
с указателем void (Node::*fn)()
и объектом Node.