Storing and loading functions
Its a good start.
But function pointers are not the only type callable objects. Functors were a big part of C++03 and with C++11 lambdas are even more important.

Rather than using:

T(*func)(Ts...)


Which handles function pointers. You can generalize this with std::function&lt;&gt;.

std::function&lt;T(Ts...)&gt;


Which generalizes the callable construct.