In C++ is it possible to make some sort of generic function pointer that points to any function that returns a pointer to some type and takes no arguments?
Eg, one type
The standard does not allow such thing. You may or may not be able to get away with casting your function pointer to void* (*)(). In C++ there are standard-conforming solutions. Here is a simple pre-C++11 one:
struct MyFunc
{
  virtual void* operator()() = 0;
  virtual ~Myfunc(){}
};
template 
struct MyfuncImpl
{
  typedef T TFunc();
  MyfuncImpl (TFunc* func) : m_func(func) {}
  void* operator()() { return m_func(); }
 private:
  TFunc* m_func;
};
 Now you can store shared_ptr in your vector.
A much nicer solution in C++11 could look like this:
template 
std::function castToVoidFunc (T* (*func)())
{
  return [=](){ return func(); };
}