Here's one way it can be done.
typedef UINT( WINAPI * ThreadFunc )( PVOID );
typedef struct
{
ThreadFunc function;
PVOID argument;
} OneFunction;
int main()
{
std::vector< OneFunction > functions;
OneFunction f;
functions.push_back( f );
(* functions[0].function )( functions[0].argument );
}
You can define different function types also. ThreadFunc is just one type. If you have to, you can cast between different types as needed also so they don't all have to return a UINT. They can return any type you want and accept any arguments you want. Just define the various types so you can cast between them as necessary.