For this recipe, you should be familiar with how to define and use function pointers.
To exemplify how std::invoke() can be used in different contexts, we will use the following function and class:
int add(int const a, int const b)
{
return a + b;
}
struct foo
{
int x = 0;
void increment_by(int const n) { x += n; }
};