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(); };
}