#include #include struct Demo { int next(int n) { return n + 1; }; }; int main() { auto f = [](int a, int b) { return a+b; }; std::cout << std::invoke(f, 1, 2) << '\n'; // f(1,2) Demo obj; std::cout << std::invoke(std::mem_fn(Demo::next), obj, 0) << '\n'; // obj.next(0) std::cout << std::invoke(Demo::next, obj, 0) << '\n'; // obj.next(0) }